2013-01-02 71 views
1

我已經完成了用於執行OOB OAuth2連接的示例,並且它可以在筆記本電腦上正常工作。如何從沒有瀏覽器的服務器訪問Google Drive文檔

我遇到的挑戰是它啓動了一個瀏覽器,要求我驗證是否要將我的應用程序的訪問權限授予相關文檔。從此它將我的憑證存儲在本地文件中,並繼續正常工作。

我的使用案例是我的公司中有多個部門想要利用Google文檔電子表格進行報告。然後我希望能夠在服務器上運行一個程序(來自cron作業),該程序可以刪除這些數據併爲所有部門構建彙總報告。

我原本打算創建一個「報告用戶」,該用戶被授予對所有相關文檔的讀取訪問權限,然後使用該標識運行報告進程。

我試着在我的筆記本電腦上運行它,然後將存儲的憑據複製到我的服務器以供它使用。但是這些證書似乎與機器相關,因此它通過瀏覽器強制實施新的驗​​證流程。

有關如何使用Google雲端硬盤認證流程的任何建議,以允許我做我需要的?

TIA

回答

1

,而不需要授予所有文檔一些用戶只讀訪問,我建議使用已授予只讀到所有谷歌Apps域用戶的文檔的訪問權限的服務帳戶:

https://developers.google.com/drive/delegation

使用:

https://www.googleapis.com/auth/drive.readonly

因爲OAuth您在控制面板中授予服務帳戶訪問權限的範圍。這樣,如果服務器遭到破壞,您只能訪問只讀。

+0

目前正在使用此解決方案。不幸的是,我需要等待我的IT服務組來啓用域名訪問。然後我可以進一步測試它。 – Andre

+0

這允許我在沒有用戶界面的情況下訪問。真棒!現在只是爲了解釋爲什麼在設置憑證的AccountUser時拋出「access_denied」錯誤。但那是另一張票。 :) – Andre

+0

聽起來像你可能已經忘記了實際的控制面板域代表團:https://developers.google.com/drive/delegation#delegate_domain-wide_authority_to_your_service_account –

1

從API控制檯P12文件創建GoogleCredential(API訪問>創建另一個客戶端ID>服務帳戶等):

GoogleCredential.Builder#setServiceAccountPrivateKeyFromP12File(File) 

more info on Service Accounts

0

其他的答案是比這更好的,但你可以隨時獲取一組憑據並將其保存在文件中以供重用。獲取憑證可以使用Web瀏覽器完成,但只能使用一次,然後您的服務器可以永久使用它們(只要您請求脫機訪問並獲得刷新令牌)。

+0

謝謝阿里,但不幸的是,這套證書似乎與機器綁定在一起。所以如果我將它們複製到新機器上,它會強制令牌刷新週期。然後需要瀏覽器......然後就這樣了。 :) – Andre

+0

不,這是不正確的。證書綁定到客戶端ID和客戶端密鑰,並綁定到用戶。那裏沒有什麼特別的機器。當然,您需要正確設置redirect_uri以允許您的計算機和預期的服務器。 –

+0

奇怪。當我將筆記本電腦中的文件複製到桌面時,它不會接受令牌並導致刷新。 : -/ – Andre

相關問題