我是新手。
在通过以下方式首次登录后: 扣登录 我能够登录到script.google.com 接下来,我创建了一个项目,并通过以下方式推送了文件: 扣住
现在,我已使用以下方式登出: 退出系统
此处需要帮助:现在,如果我正在尝试:
clasp登录--creds ./。clasp.json
我正在获取“检索访问令牌时出错:TypeError:无法读取未定义的属性'project_id'”。
请指导我如何通过--creds登录?
答案 0 :(得分:1)
TLDR:您正在使用配置文件(.clasp.json
),而不是Google Cloud Project控制台中的凭据文件(creds.json
或其他)。
登录时,凭据的默认存储位于.clasprc.json
目录(在Windows中为~
)的名为 C:\Users\<user>\
的文件中:>
$ clasp login
Logging in globally...
Authorize clasp by visiting this url:
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&.....
Authorization successful.
Default credentials saved to ~\.clasprc.json (C:\Users\<user>\.clasprc.json).
请注意,此文件( .clasprc.json
)与 .clasp.json
不同。
据说该文件的内容取决于身份验证类型,全局或本地:
// GLOBAL: clasp login will store this (~/.clasprc.json):
{
"access_token": "XXX",
"refresh_token": "1/k4rt_hgxbeGdaRag2TSVgnXgUrWcXwerPpvlzGG1peHVfzI58EZH0P25c7ykiRYd",
"scope": "https://www.googleapis.com/auth/script.projects https://www.googleapis.com/auth/script ...",
"token_type": "Bearer",
"expiry_date": 1539130731398
}
本地身份验证存储客户端密钥/等,如果您打算使用clasp run
通过Google Apps Script API执行功能,通常需要使用本地身份验证。
// LOCAL: clasp login will store this (./.clasprc.json):
{
"token": {
// as above
},
// Settings
"oauth2ClientSettings": {
"clientId": "807925367021-infvb16rd7lasqi22q2npeahkeodfrq5.apps.googleusercontent.com",
"clientSecret": "9dbdeOCRHUyriewCoDrLHtPg",
"redirectUri": "http://localhost"
},
"isLocalCreds": true
}
(实际上,两个文件的格式均为LOCAL
文件的格式,即属性token
,oauth2ClientSettings
和isLocalCreds
,尽管{{ 1}}对于全局登录名将为false。)
isLocalCreds
请注意,{
"scriptId": "",
"rootDir": "build/",
"projectId": "project-id-xxxxxxxxxxxxxxxxxxx",
"fileExtension": "ts",
"filePushOrder": ["file1.ts", "file2.ts"]
}
是脚本文件的配置,clasp.json
是已存储 用户的凭证/授权 >。 两者都不是用于本地登录的适当凭据文件。
您得到的特定错误是由于您提供了不正确的文件而导致的。您提供的“凭据”文件不具有必需的属性,因此,当扣环尝试进行read from that property
时,clasprc.json
您收到错误:
检索访问令牌时出错:TypeError:无法读取未定义的属性'project_id'
您可以从Apps脚本项目的Google Cloud Project页面(即 console.log(LOG.CREDS_FROM_PROJECT(options.creds.installed.project_id));
此文件的格式为:
https://console.cloud.google.com/apis/credentials?authuser=0&project=<some project id>
如果您的凭据文件没有这种格式,则不能使用它来本地登录。
答案 1 :(得分:0)
我也遇到了这个错误,当我错误地为 oauth 类型选择了“Web 应用程序”而不是“桌面应用程序”时,在这种情况下,主要部分是“网络”,而不是“已安装”,我收到了相同的信息
>Error retrieving access token: TypeError: Cannot read property 'project_id' of undefined
错误的 oauth 客户端看起来像
{
"web": {
"client_id": "<STUFF>",
"project_id": "<STUFF>",
"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": "<STUFF>"
}
}
虽然正确
{
"installed": {
"client_id": "<STUFF>",
"project_id": "<STUFF>",
"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": "<STUFF>",
"redirect_uris": [
"urn:ietf:wg:oauth:2.0:oob",
"http://localhost"
]
}
}
脚本尝试解析“installed.project_id”变量并失败。