无法使用Google Sheets API,无法生成正确的凭据元素

时间:2019-04-24 22:49:32

标签: google-cloud-platform google-sheets-api google-oauth2

我是Google Sheets API v4的忠实拥护者。我四个月前在那里做了一个项目,效果很好。现在不走。不知道发生了什么,但是通过https://console.developers.google.com/apis/credentials?project=my-project-sheets-api创建的凭据似乎与我四,五个月前设置的内容没有相同的内容。

5个月前的项目凭证:

{
    "installed": {
        "client_id": "4xxxxxxxxxx1-3xxxxxxxxxxg.apps.googleusercontent.com",
        "project_id": "previous-project",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://www.googleapis.com/oauth2/v3/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_secret": "wxxxxxt",
        "redirect_uris": [
            "urn:ietf:wg:oauth:2.0:oob",
            "http://localhost"
        ]
    }
}

新项目凭据:

{
  "type": "service_account",
  "project_id": "my-new-project-sheets-api",
  "private_key_id": "9xxxa",
  "private_key": "-----BEGIN PRIVATE KEY-----\nxxxxxxQ=\n-----END PRIVATE KEY-----\n",
  "client_email": "my-new-project-sheets-api@my-new-project-sheets-api.iam.gserviceaccount.com",
  "client_id": "1xxx7",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/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/my-new-project-sheets-api%40my-new-project-sheets-api.iam.gserviceaccount.com"
}

我不是每天都使用这些控制台。在这种情况下,我使用了https://console.cloud.google.com/apis/credentials?folder=&organizationId=&project=my-new-project-sheets-api

上的“帮助我选择”向导

Google Cloud Console

从表格API v4可以看出,没有client_id,client_secret,redirect_uris [0],我无法生成令牌

使用向导不会生成客户端机密,也不会要求redirect_uris。如何为读/写的Google工作表生成正确的凭据集?注意:我只是想在我创建的Google工作表上进行读写,而不是在其他用户的个人工作表上进行读写。而且我只从Node.js服务器而不是从客户端访问该Google工作表上的内容。

关于使我误解的具体错误,是TypeError: Cannot destructure property 'client_secret' of 'undefined' or 'null' at authorize();参考https://developers.google.com/sheets/api/quickstart/nodejs

中显示的快速入门代码

function authorize(credentials, callback) { const {client_secret, client_id, redirect_uris} = credentials.installed;

如何为Google Sheets API v4生成正确的凭据?

1 个答案:

答案 0 :(得分:0)

所以我确实必须生成OAuth 2.0客户端ID。那给了我一个client_id和client_secret。

同样,我的用例是:

  • 以我的Google登录名和所有权存储在Google工作表中的数据。
  • Google表格是私人的
  • 所有数据访问均通过nodejs服务器进行,​​而不是通过客户端进行。

更新:我最初尝试使用Web客户端类型的凭据。我还创建了自己的自定义certificate.json文件。总失败。

这是我创建正确的client_secret.json文件的方式:

  • https://console.cloud.google.com/apis/credentials的上方蓝色栏下拉菜单中选择您的项目。
  • 点击“创建凭据”按钮。
  • 选择OAuth客户端ID。
  • 应用程序类型=其他。
  • 我将新凭据重命名为“节点服务器”。
  • 系统将创建一个client_id和client_secret。
  • 刷新页面后,您将看到凭据的概述。
  • 在OAuth 2.0客户端ID的右侧,“节点服务器”上有一个铅笔图标(编辑)。点击铅笔。
  • 在下一个屏幕的顶部,单击“下载JSON”链接。

您收到的产品将如下所示:

{
    "installed": {
        "client_id": "xxx.apps.googleusercontent.com",
        "project_id": "xxx-sheets-api",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_secret": "xxx",
        "redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]
    }
}

此内容与https://developers.google.com/sheets/api/quickstart/nodejs的示例代码中调用的格式和功能完全匹配。

对于我的用例,“帮助我选择”向导不是正确的选择。