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

问题描述 投票:0回答:1

我是Google表格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服务器访问该表格上的内容,而不是从客户端访问。

至于让我来到这里的具体错误,它是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表格API v4生成正确的凭据?

google-cloud-platform google-sheets-api google-oauth2
1个回答
0
投票

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

我的用例再次是:

  • 根据我的Google登录信息和所有权存储在Google表格中的数据。
  • Google表格是私密的
  • 所有数据访问都是通过nodejs服务器进行的,而不是通过客户端。

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

以下是我创建正确的client_secret.json文件的方法:

  • https://console.cloud.google.com/apis/credentials,在上方的蓝色条形下拉菜单中选择您的项目。
  • 点击按钮创建凭证。
  • 选择OAuth客户端ID。
  • 申请类型=其他。
  • 我重命名了我的新凭证“Node Server”。
  • 系统将创建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的示例代码中提到的格式和函数完全匹配。

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

© www.soinside.com 2019 - 2024. All rights reserved.