0

我正在嘗試使用node.js訪問Google表格。有一個pretty good looking API,但它使用.pem文件來驗證應用程序。第二種方法是使用 client_id, client_secret refresh_token for oauth2或其他名稱 accesstoken。但是我從谷歌開發者控制檯中有一個JSON格式化的關鍵:使用JSON格式密鑰訪問谷歌電子表格

{ 
     type: 'service_account', 
     project_id: 'fu...ng-1234', 
     private_key_id: '2fd...0ba', 
     private_key: '-----BEGIN PRIVATE KEY ... END PRIVATE KEY-----\n', 
     client_email: '[email protected]', 
     client_id: '10...51', 
     auth_uri: 'https://accounts.google.com/o/oauth2/auth', 
     token_uri: 'https://accounts.google.com/o/oauth2/token', 
     auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs', 
     client_x509_cert_url: 'https://www.googleapis.com/robot/v1/metadata/x509/...%40appspot.gserviceaccount.com' 
} 

我知道如何導出 PRIVATE_KEY爲.pem文件,但是,這並不像一個純粹的解決方案給我,因爲這意味着額外的文件和潛在的安全風險。它也被oauth使用,並有可能使用oauth2。那麼,有沒有辦法如何使用這些JSON格式的信息來訪問谷歌電子表格,使用這個API使用oauth2?

非常感謝你的回答。

回答

0

是的,您可以使用Oauth 2.0與Google Sheet API access Google spreadsheet。當您向非公開用戶請求Google API時,數據必須由經過身份驗證的用戶授權。

Oauth2.0授權過程的細節根據您正在編寫的應用程序類型而有所不同。

以下流程適用於所有應用:

  • 當你創建你的應用程序,你與谷歌註冊。 Google隨後會提供您稍後需要的信息,例如客戶端ID和客戶端密碼。
  • 當您的應用程序需要訪問用戶數據時,它會要求Google提供特定的訪問範圍。
  • Google向用戶顯示一個OAuth對話框,要求他們授權您的應用程序請求其某些數據。
  • 如果用戶批准,Google會爲您的應用程序提供短期訪問令牌。
  • 您的應用程序請求用戶數據,將訪問令牌附加到請求。
  • 如果Google確定您的請求和令牌有效,它會返回請求的數據。

您的應用程序需要範圍信息以及Google在應用程序註冊期間提供的信息(例如客戶端ID和/或客戶端密碼)。

Google Sheets API版本v4現已發佈,請立即遷移您的應用。本遷移指南顯示如何更新應用程序以使用v4:https://developers.google.com/sheets/guides/concepts