Невозможно использовать API Google Sheets, невозможно создать правильные элементы учетных данных. - PullRequest
0 голосов
/ 25 апреля 2019

Я большой поклонник 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

Google Cloud Console

Из того, что я вижу в 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?

1 Ответ

0 голосов
/ 26 апреля 2019

Итак, мне нужно было сгенерировать идентификаторы клиента OAuth 2.0. Это дало мне client_id и client_secret.

Опять же, мой вариант использования:

  • Данные хранятся в листе Google под моим логином и правами собственности Google.
  • Google лист является приватным
  • Доступ ко всем данным осуществляется через сервер nodejs, а не через клиент.

Обновление: я изначально пытался использовать учетные данные типа веб-клиента. Я также создал свой собственный файл credentials.json. Полный провал.

Вот как я создал правильный файл client_secret.json:

  • В точке https://console.cloud.google.com/apis/credentials, выберите ваш проект в раскрывающемся списке верхней синей полосы.
  • Нажмите кнопку, чтобы создать учетные данные.
  • Выберите идентификатор клиента OAuth.
  • Тип приложения = Другое.
  • Я переименовал свои новые учетные данные в "Node Server".
  • Система создаст client_id и client_secret.
  • После обновления страницы вы увидите обзор своих учетных данных.
  • Справа от идентификаторов клиентов OAuth 2.0, "Node Server", есть значок карандаша (правка). Нажмите на карандаш.
  • В верхней части следующего экрана нажмите ссылку «Скачать 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.

Мастер «помоги мне выбрать» не был правильным выбором для моего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...