2012-07-02 43 views

回答

4

您有任何理由不能使用OAuth 2.0作爲您的授權機制嗎?

客戶端登錄當前爲deprecated,您和您的用戶使用OAuth 2.0會更好。

Drive SDK documentation以及各種客戶端庫項目頁面中有多個代碼示例可幫助您入門。

+2

是的,我無法使用OAuth,因爲我的應用程序是命令行的,並且它應該在沒有圖形界面的Linux服務器上運行。 – Evgenii

+0

您不需要設備本身的圖形界面。您可以使用[Native Application flow](https://developers.google.com/accounts/docs/OAuth2InstalledApp)在另一臺計算機上設置授權(例如通過SSH):應用程序將生成一個您必須訪問的URL同時進行身份驗證並將代碼複製迴應用程序。 – Alain

+0

謝謝你的細節,阿蘭。使用另一臺帶有GUI的計算機來驗證服務器應用程序不是我的選擇,因爲它使工作流程變得複雜。看起來我現在別無選擇,只能繼續使用「文檔列表API」。 – Evgenii

0

如果您正在運行服務器應用程序,請考慮在OAuth2和Drive API中使用服務帳戶。這將允許您在服務器上運行應用程序,而無需用戶在控制檯上或通過用戶界面提供OAuth2憑據。如果您希望您的應用使用特定帳戶處理文檔,您也可以進行模擬。

GoogleCredentials credentials = new GoogleCredential.Builder() 
      .setTransport(HTTP_TRANSPORT) 
      .setJsonFactory(JSON_FACTORY) 
      .setServiceAccountId("[[SERVICE_ACCOUNT_EMAIL]]") 
      .setServiceAccountScopes(DriveScopes.DRIVE, DriveScopes.DRIVE_FILE, 
       "https://www.googleapis.com/auth/userinfo.email", 
       "https://www.googleapis.com/auth/userinfo.profile") 
      .setServiceAccountPrivateKeyFromP12File(Auth.keyFile) 
      .setServiceAccountUser("[[[email protected]]]") 
      .build(); 
    credentials.refreshToken(); 
相關問題