2014-10-07 80 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

相關問題