我是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使用了“帮我选择”向导
从我可以看到的工作表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生成正确的凭据?
所以我必须生成OAuth 2.0客户端ID。这给了我一个client_id和client_secret。
我的用例再次是:
更新:我最初尝试使用Web客户端类型的凭据。我还创建了自己的自定义credentials.json文件。总失败。
以下是我创建正确的client_secret.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的示例代码中提到的格式和函数完全匹配。
“帮我选择”向导不是我的用例的正确选择。