Google Drive API - 如何使用域范围的服务帐户并从域中获取所有文档列表

时间:2014-10-07 12:31:36

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

我试图使用我的应用程序的服务帐户访问我域中所有用户的所有文档。我按照这些说明操作: 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();

它运行正常,但它应该为我提供此域的所有用户的详细信息...相反它只给我一个useraccount ..在“服务”帐户doc它说它应该能够访问所有用户在此域下的数据。

添加了范围,并为此帐户启用了APIS

1 个答案:

答案 0 :(得分:3)

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

服务帐户只会让您省去不得不请求个别用户许可的麻烦。我认为您可以实现所需目标的唯一方法是使用Admin SDK中的Directory API检索域中的所有用户(请参阅此答案Listing users using Google Admin SDK in Java),然后通过设置循环创建新的Credential对象服务帐户用户,例如setServiceAccountUser( “blah@blah.com”)。

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

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