【问题标题】:Google Drive API - How to work with the domain-wide service account and get all document list from domainGoogle Drive API - 如何使用域范围的服务帐户并从域中获取所有文档列表
【发布时间】:2014-10-07 12:31:35
【问题描述】:

我试图使用我的应用程序的服务帐户来访问我域中所有用户的所有文档。我按照以下说明操作:https://developers.google.com/drive/delegation

但它没有用。你能帮我解决这个问题吗?

这是有问题的代码行

GoogleCredential credential = new GoogleCredential.Builder() .setTransport(TRANSPORT) .setJsonFactory(jsonFactory) .setServiceAccountId("SERVICE_ACCOUNT_EMAIL") .setServiceAccountPrivateKeyFromP12File( new java.io.File("SERVICE_ACCOUNT_PKCS12_FILE_PATH")) .setServiceAccountScopes(scopes) .setServiceAccountUser("abc@xyz.com").build();

它工作正常,但它应该给我这个域的所有用户的详细信息......相反,它只给我一个用户帐户。在“服务”帐户文档中它说它应该能够访问所有该域下的用户数据。

已添加范围并为此帐户启用 API

【问题讨论】:

  • 您需要修正格式。
  • 当我运行获取文档的程序时,出现以下错误 com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 OK { "code" : 403, "errors" : [ { "domain ":"全局","消息":"禁止","原因":"禁止"}],"消息":"禁止"}

标签: java google-app-engine google-drive-api


【解决方案1】:

我不认为文档意味着您可以拥有一个服务帐户并一次性访问整个域中的所有文件,您需要使用服务帐户代表特定用户执行操作。 setServiceAccountUser("abc@xyz.com")

服务帐户只是为您省去了向单个用户请求许可的麻烦。我认为您可以实现所需的唯一方法是使用 Admin SDK 中的目录 API 检索域中的所有用户(请参阅此答案 Listing users using Google Admin SDK in Java),然后通过设置服务循环遍历这些用户创建新的凭据对象帐户用户,例如setServiceAccountUser("blah@blah.com").

然后使用 Drive SDK 列出每个用户的文件:

https://developers.google.com/drive/v2/reference/files/list

【讨论】:

  • 我这样做了,但我得到了 FileList 的空结果
  • 当我运行获取文档的程序时,出现以下错误 com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 OK { "code" : 403, "errors" : [ { "domain ":"全局","消息":"禁止","原因":"禁止"}],"消息":"禁止"}
  • 您是否按照此处列出的所有步骤执行域委派? developers.google.com/drive/web/delegation 特别是授予您的客户端 ID 访问域管理控制台中的驱动器范围的权限?
  • 是的,我已遵循所有步骤。我添加了 4 个作用域 googleapis.com/auth/admin.directory.usergoogleapis.com/auth/drivegoogleapis.com/auth/profilegoogleapis.com/auth/userinfo.profile。但它给了我 com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 OK error
  • omerio 谢谢。我解决了禁止的异常。我面临另一个问题 com.google.api.client.googleapis.json.GoogleJsonResponseException: 503 OK { "code" : 503, "errors" : [ { "domain" : "global", "message" : "Backend Error", “原因”:“后端错误”}],“消息”:“后端错误”}
猜你喜欢
  • 2014-09-26
  • 2020-04-02
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多