REST API для магазина с токеном Google Identity OAuth 2.0 - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу использовать REST API для firestore, используя следующий URL https://firestore.googleapis.com/v1beta1/projects/ {projectid} / database / (по умолчанию) / documents / products? Key = {apikey}

текущее правило для базы данных:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

, даже после предоставления ключа я получаю сообщение об ошибке "Отсутствует или недостаточно разрешений.",

Ответы [ 2 ]

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

Передача ключевого параметра в REST API не имеет ничего общего с правилами безопасности. Правило, которое вы показываете, ограничивает доступ к пользователям в вашем приложении, которые в настоящее время проходят проверку подлинности с помощью Firebase Authentication и имеют токен Firebase ID :

Работа с токенами Firebase ID

Получить токен Firebase ID можно двумя способами:

  • Создать токен Firebase ID с помощью API-интерфейса REST Firebase Authentication.
  • Получить пользователя Маркер Firebase ID из пакета Firebase Authentication.

Получая маркер Firebase ID пользователя, вы можете делать запросы от имени пользователя.

Для запросов, аутентифицированных с помощью Токен ID Firebase и для неаутентифицированных запросов Cloud Firestore использует ваши правила безопасности Cloud Firestore, чтобы определить, авторизован ли запрос.

Если вы пытаетесь пройти аутентификацию с помощью токена Firebase или Oauth Вы должны передать его, как описано в документации :

Аутентификация с токеном доступа * 1 032 *

После того, как вы получите токен Firebase ID или токен Google Identity OAuth 2.0, передайте его конечным точкам Cloud Firestore в качестве заголовка авторизации, установленного на Bearer {YOUR_TOKEN}.

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

0 голосов
/ 13 февраля 2020

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

Для Аутентифицированный частный Вы можете использовать

allow read, write: if request.auth != null;

И для Пользователя личного

allow read, write: if request.auth.uid == userId;

Естественно, для лестницы вы должны были бы также отправить этот идентификатор пользователя на ваш URL.

Позвольте Я знаю, если это решит вашу проблему с разрешениями.

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