Как сделать не прошедший проверку подлинности пожарного хранилища REST API POST-запрос - PullRequest
0 голосов
/ 26 июня 2018

Документы для REST API Firestore есть по всему магазину, что, я думаю, простительно, так как все еще находится в бета-версии.Похоже, они предлагают, чтобы REST API следовал тем же правилам, что и клиент gRPC, и поэтому, если у пути есть правила, говорящие:

match /thing/* { allow create; allow read: if request.auth.uid != null; }

(скажем, я хочу, чтобы кто-нибудь могдобавить вещи, а затем только проверенных пользователей, чтобы увидеть эти вещи)

тогда я смогу:

curl 'https://content-firestore.googleapis.com/v1beta1/projects/myproject/databases/(default)/documents/things?alt=json' -H 'Content-Type: application/json' -d '{"fields":{"test":{"stringValue": "foo"}}}'

и создать документ в моей коллекции вещей.Но я получаю:

{ "error": { "code": 403, "message": "Missing or insufficient permissions.", "status": "PERMISSION_DENIED" } }

Кому-нибудь повезло с этим?Или я просто тот парень со странным сценарием использования?В некоторых документах упоминаются токены API или другие методы аутентификации в облачном хранилище Google.

Последующий вопрос, если для ответа мне нужен сложный аутентификатор, существует ли еще одна хорошо известная стратегия представления REST API в Интернете, которая пишет вFirestore?

edit: я должен также добавить, что та же самая команда POST работает нормально при запуске из браузера API Google в браузере, но когда я это делаю, я аутентифицируюсь.

1 Ответ

0 голосов
/ 26 июня 2018

Ваше правило гласит: request.auth.uid! = Null - поэтому пользователь должен проходить аутентификацию при выполнении запроса.Поведение REST API является правильным, так как вы делаете запрос для пользователя, который не прошел проверку подлинности, вы получаете 403

Способ проверки подлинности этого пользователя зависит от вашей платформы.Но если мы предполагаем, что вы находитесь в Интернете, то после входа пользователя в систему вы можете запустить метод firebase.auth (). CurrentUser.getToken (true) .then (token => token) ... и как только вы это сделаететокен, добавьте его в свой URL с помощью & access = YOUR_TOKEN.

Теперь firebase сможет аутентифицировать вашего пользователя с помощью REST API, и ваши запросы должны завершиться, как и ожидалось.

...