2014-10-07 81 views
1

我试图使用我的应用的服务帐户访问我域中所有用户的所有文档。我按照这些说明:https://developers.google.com/drive/delegationGoogle Drive API - 如何使用域范围的服务帐户并获取域中的所有文档列表

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

这里是代码

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("[email protected]").build();

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

作用域添加和API都启用该帐户

+0

你需要修复您的格式。 – skrrgwasme 2014-10-07 12:41:27

+0

当我运行获取文档的程序出现以下错误com.google.api.client.googleapis.json.GoogleJsonResponseException:403 OK {“code”:403,“errors”:[{“domain”:“global”,“消息“:”禁止“,”原因“:”禁止“}],”消息“:”禁止“} – 2014-10-09 04:22:26

回答

2

我不认为文档意味着你可以有一个服务帐户和一个去访问整个域中的所有文件,你需要采取行动代表特定用户使用服务帐户.setServiceAccountUser(“[email protected]”)

该服务帐户简单地节省您不必要求个别用户许可的麻烦。我认为您可以实现目标的唯一方法是使用Admin SDK中的Directory API检索域中的所有用户(请参阅此答案Listing users using Google Admin SDK in Java),然后循环遍历这些用户,通过设置服务帐户用户来创建新的Credential对象例如setServiceAccountUser( “[email protected]”)。

然后使用驱动器SDK列出文件为每个用户:

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

+0

我做到了这一点,但我得到FileList – 2014-10-08 04:12:39

+0

空结果当我运行获取文件的程序错误来了COM .google.api.client.googleapis.json.GoogleJsonResponseException:403 OK { “代码”:403, “错误”:[{ “域”: “全局”, “消息”: “禁止”, “原因”:“禁止” }], “消息”:“禁止” } – 2014-10-08 07:32:35

+0

您是否遵循了此处列出的所有步骤来执行域代表团? https://developers.google.com/drive/web/delegation特别授予您的客户端ID访问域管理控制台中的驱动器范围? – omerio 2014-10-08 08:27:34

相关问题