Разница между Firebase «База данных в реальном времени» и «Облачное хранилище» с точки зрения REST API и аутентификации - PullRequest
0 голосов
/ 05 февраля 2020

Возможно, дублированный вопрос, но на этот раз я старался изо всех сил в своем объяснении.

Находясь на моей консоли Firebase, когда я нажимаю на опцию «База данных» в левой части экрана, это представил мне, что у нас есть две разные базы данных, «База данных в реальном времени» и «Облачное хранилище».

enter image description here

Это текущая внешний вид моей базы данных в реальном времени:

enter image description here

Это текущий вид моего облачного хранилища огня:

enter image description here

ПРОВЕРКА БАЗЫ ДАННЫХ В РЕАЛЬНОМ ВРЕМЕНИ

На Почтальоне я выбираю опцию PATCH и определяю, что я надену на адресная строка, я следую синтакс:

https://PROJECT-NAME.firebaseio.com/PATH.json?auth=YOUR-DATABASE-SECRET-CODE

Для меня это становится:

https://eletronica-ab6b1.firebaseio.com/database333.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pIT0

Это не мой настоящий секретный ключ , не волнуйтесь.

И в качестве содержания моего запроса, я go для тела, выберите «raw» и «JSON» в списке, а ниже содержание:

{"name": "PAUL"}

E точно так, как вы можете видеть здесь:

enter image description here

После нажатия ОТПРАВИТЬ почтальона, запись в РЕАЛЬНУЮ БАЗУ ДАННЫХ фактически происходит:

enter image description here

Итак, запись в REALTIME DATABASE работает через почтальона.

CLOUD FIRESTORE TEST

Вот мой проблема, у меня нет успеха с Cloud Firestore.

На Почтальоне я выбираю опцию GET, и чтобы определить, что я положу в адресную строку, я следую синтаксу:

https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(default)/documents/COLLECTION/DOCUMENT

Для меня, это становится:

https://firestore.googleapis.com/v1/projects/eletronica-ab6b1/databases/(default)/documents/colA/docA.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pIT0

Точно так, как вы можете видеть здесь:

enter image description here

И я получаю это сообщение как ответ:

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"auth\": Cannot bind query parameter. Field 'auth' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"auth\": Cannot bind query parameter. Field 'auth' could not be found in request message."
          }
        ]
      }
    ]
  }
}

Странно, что если я попытаюсь изменить имя проекта по запросу, например, с оригинального "eletronica-ab6b1" на "eletronica-999zzz", то есть что-то, что должно не существует, ответ такой же, как и выше, точно такой же.

Почему так легко написать в REALTIME DATABASE и, кажется, нелегко написать в CLOUD FIRESTORE DATABASE? Разве невозможно записать в Cloud Firestore простым способом, как это делается в Realtime Database? Облачный Firestore основан на токенах? Если да, как я могу получить токен через Почтальон, а затем использовать этот токен для записи в базу данных Cloud Firestore?

С уважением.

1 Ответ

1 голос
/ 05 февраля 2020

Cloud Firestore не поддерживает доступ через секретный ключ. Для использования REST API вам потребуется токен доступа Google OAuth (для административного доступа) или токен Firebase Auth ID (обычный пользовательский доступ). Затем его необходимо будет передать на сервер в заголовке Authorization в форме:

Authorization: Bearer ${insert_token_here}

Я бы порекомендовал прочитать документы для получения дополнительной информации о том, как получить соответствующие токены.

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