TLDR: вы используете файл конфигурации (.clasp.json
), а не файл учетных данных (creds.json
или другой) из консоли Google Cloud Project.
При входе в системухранилище учетных данных по умолчанию находится в файле с именем .clasprc.json
в каталоге ~
(C:\Users\<user>\
в Windows):
$ 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
}
Локальная аутентификация хранит секрет клиента / etc и обычно требуется, если вы планируете использовать clasp run
для выполненияфункция через API скриптов Google Apps.
// 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
-- хотя значение isLocalCreds
будет иметь значение false для глобального входа.)
{
"scriptId": "",
"rootDir": "build/",
"projectId": "project-id-xxxxxxxxxxxxxxxxxxx",
"fileExtension": "ts",
"filePushOrder": ["file1.ts", "file2.ts"]
}
Обратите внимание, что clasp.json
равно Конфигурацияфайлы сценариев и clasprc.json
хранятся в учетные данные / авторизация пользователя . Ни один из них не является подходящим файлом учетных данных для локального входа в систему.
Устранение ошибки
Конкретная ошибка, которую вы получаете, связана с предоставлением неверного файла.Ваш предоставленный файл «учетных данных» не имеет требуемых свойств, и поэтому, когда clasp пытается прочитать из этого свойства
console.log(LOG.CREDS_FROM_PROJECT(options.creds.installed.project_id));
, вы получите ошибку:
Ошибка при получении токена доступа: Ошибка типа: Невозможно прочитать свойство 'project_id' с неопределенным значением
Вы можете получить надлежащий файл учетных данных со страницы вашего облачного проекта Google Apps Script, например https://console.cloud.google.com/apis/credentials?authuser=0&project=<some project id>
Этот файл будет иметь формат:
{
"installed":{
"client_id":"<stuff>.apps.googleusercontent.com",
"project_id":"<some project id>",
"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":"<more stuff>",
"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]
}
}
Если ваш файл учетных данных не имеет этого формата, вы не можете использовать его для локального входа в систему.