使用JSON格式密钥访问Google电子表格

时间:2016-05-23 13:51:40

标签: node.js oauth-2.0 google-sheets google-spreadsheet-api google-oauth2

我尝试使用node.js访问google table。有一个pretty good looking API,但它使用.pem文件来验证应用程序。第二种方法是使用 client_id client_secret refresh_token 为oauth2或名为 accesstoken 的东西。但是我从谷歌开发者控制台获得的是一个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: '...@appspot.gserviceaccount.com',
        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格式信息使用oauth2使用此API来访问Google电子表格?

非常感谢您的回答。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用access Google spreadsheet使用Google Sheet API Oauth 2.0。当您向非公共用户请求Google API时,数据必须由经过身份验证的用户授权。

Oauth2.0授权过程的细节会有所不同,具体取决于您编写的应用程序类型。

以下流程适用于所有申请:

  • 创建应用程序时,请在Google上注册。然后,Google会提供您稍后需要的信息,例如客户端ID和客户端密码。
  • 当您的应用需要访问用户数据时,它会要求Google提供特定的访问权限。
  • Google向用户显示OAuth对话框,要求他们授权您的应用程序请求他们的部分数据。
  • 如果用户批准,那么Google会为您的应用提供一个短期访问令牌。
  • 您的应用程序请求用户数据,将访问令牌附加到请求。
  • 如果Google确定您的请求和令牌有效,则会返回请求的数据。

您的应用程序需要范围信息以及Google在应用程序注册期间提供的信息(例如客户端ID和/或客户端密钥)。

Google表格API版本v4现已推出,请立即迁移您的应用。此迁移指南介绍了如何更新要使用v4的应用程序:https://developers.google.com/sheets/guides/concepts