TL; DR: вы используете файл конфигурации (.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
}
Локальная аутентификация хранит секрет клиента / и т. Д. И обычно требуется, если вы планируете использовать 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
и _15 _ - хотя значение isLocalCreds
будет ложным для глобального входа в систему.)
{
"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));
вы получите ошибку:
Ошибка при получении токена доступа: TypeError: невозможно прочитать свойство project_id из undefined
Вы можете получить соответствующий файл учетных данных на странице проекта Google Cloud Project вашего проекта 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"]
}
}
Если ваш файл учетных данных не имеет этого формата, вы не можете использовать его для локального входа.
person
tehhowch
schedule
08.02.2019