Как получить доступ к Firestore с помощью CURL с ключом API и токеном служебного аккаунта? - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь получить доступ к своей базе данных Firestore с помощью cURL из сеанса терминала. Я прочитал документацию по REST API для Firestore и документацию по аутентификации для аутентификации учетных записей Oauth и служб. Я настроил учетные записи служб и роли IAM на панели управления API. Я не могу определить из документации, какой правильный путь и синтаксис и что используются для ключа API и токена BEARER. Например, я пытаюсь получить ответ json для ПОЛЬЗОВАТЕЛЯ xyz, поле документа FNAME, которое хранится в БАЗЕ ДАННЫХ Firestore (примечание - где я могу найти идентификатор базы данных?), Который находится в тестовом проекте PROJECT.

Вот список команд CURL в документации -

curl \
  'https://firestore.googleapis.com/v1beta1/%5BNAME%5D?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --compressed

curl --request POST \
  'https://firestore.googleapis.com/v1beta2/%5BNAME%5D:exportDocuments?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{}' \
  --compressed

Вопросы - что я использую для [YOUR_API_KEY]? Что я использую для [ВАШЕГО ЖЕТОНА ДОСТУПА] -

Я пробовал следующее из учетных данных для учетной записи службы, которую я настроил

Service account - Key - 3......................e76
Unique ID - 1............39

для КЛЮЧА API и ТОКЕНА ДОСТУПА и получить обратно ошибку 403

У меня также есть учетные данные Oauth -

Client ID - 2.....113-95.......cpqrarqb.....qnrpc.apps.googleusercontent.com
Client Secret - L......lq

PATH

https://firestore.googleapis.com/v1/projects/{project_id}/databases/{database_id}/collectionGroups/{collectionId}/fields/{field_id}

Что тоже не сработало ...

Опять же, я пытаюсь получить доступ, прочитать и записать данные в мою базу данных Firestore, используя CURL - в качестве прокси для того, что будет моим REST API. Любая помощь и содействие очень приветствуются.

1 Ответ

0 голосов
/ 06 августа 2020

Судя по вставленным вами командам curl, я понимаю, что вы хотите экспортировать свои коллекции firestore в корзину Cloud Storage. Кроме того, я понимаю, что вы получили команды curl из api explorer метода экспорта.

Чтобы предоставить значение ключа api для [YOUR_API_KEY], вам сначала нужно создать ключ api в вашем Проект GCP; вот процесс:

  1. Go в раздел учетные данные .
  2. Нажмите на опцию вверху под названием «Создать учетные данные».
  3. Выберите ключ API.
  4. Скопируйте и сохраните значение, выданное Cloud Console (это ваш ключ API).

Если вы хотите узнать больше о ключах API , вы можете посетить это .

Чтобы указать значение токена oauth, вы можете сделать следующее:

  1. Вы можете открыть Cloud Shell.
  2. Выполнить команду gcloud auth application-default print-access-token.
  3. Скопируйте и сохраните значение, выданное Cloud Shell (это ваш токен oauth).

Обратите внимание, что Есть несколько способов создать токен oauth, но тот, который я указал, является самым быстрым. Вы также можете использовать oauth игровую площадку для генерации вашего токена; имейте в виду, что токен действителен в течение 60 минут.

В соответствии с идентификатором базы данных, который я использовал (по умолчанию), и здесь я включаю свой оператор curl:

curl --request POST \  
'https://firestore.googleapis.com/v1/projects/[PROJECT_ID]/databases/(default):exportDocuments?key=[YOUR_API_KEY]' \  
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \  
--header 'Accept: application/json' \  
--header 'Content-Type: application/json' \  
--data '{"collectionIds":["users"],"outputUriPrefix":"gs://[BUCKET_PATH]"}' \  
--compressed
...