Я большой поклонник 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, а не на отдельных листах других пользователей. И я получаю доступ только к содержимому этой таблицы 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 Sheets API v4?