我是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
上的“帮助我选择”向导从表格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生成正确的凭据?
答案 0 :(得分:0)
所以我确实必须生成OAuth 2.0客户端ID。那给了我一个client_id和client_secret。
同样,我的用例是:
更新:我最初尝试使用Web客户端类型的凭据。我还创建了自己的自定义certificate.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的示例代码中调用的格式和功能完全匹配。
对于我的用例,“帮助我选择”向导不是正确的选择。