当使用服务帐户列出GSuite上的驱动器文件时,java被授权
我有一个使用谷歌API的应用程序。我为它创建了一个服务帐户,下载了密钥并为GSuite启用了域范围的委派。作用域包括驱动器。 我试图通过使用服务帐户模拟用户来遍历GSuite用户的驱动器文件,如下所示:
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential.Builder builder = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(serviceAccountEmail)
.setServiceAccountPrivateKey(credFromJson(HTTP_TRANSPORT).getServiceAccountPrivateKey())
.setServiceAccountScopes(SCOPES);
builder.setServiceAccountUser(userEmail);
GoogleCredential credential = builder.build();
return new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, null)
.setApplicationName(APPLICATION_NAME)
.setHttpRequestInitializer(credential).build();
GoogleCredential已成功创建。它具有serviceAccountId、serviceAccountPrivateKey、serviceAccountUser和所需的作用域
但是打电话的时候
driveService.files().list().setFields("nextPageToken, files(*)").execute().getFiles();
我犯了一个错误。 我相当肯定重新设置服务帐户的所有步骤都已成功完成,并且启用了域范围的委派,甚至凭据也似乎正常。范围当然是正确的。 下一步我该去哪里
# 1 楼答案
意味着你没有访问权限。你为什么没有访问权限是另一个问题。可能是委派设置,也可能是您的身份验证
你试过做档案吗。在服务帐户上列出自己的帐户,以查看其是否正常工作。这将告诉您这是您的授权问题还是gsuite设置问题
但在我看来,你甚至没有设置证书,这将永远不会起作用