Firestore REST API 使用 http-client 发出经过身份验证的请求
Posted
技术标签:
【中文标题】Firestore REST API 使用 http-client 发出经过身份验证的请求【英文标题】:Firestore REST API make authenticated request with http-client 【发布时间】:2021-12-31 04:03:16 【问题描述】:我想通过 REST API 从 Firestore 获取数据。我正在使用 HTTP-Client (Webstorm) 并执行以下操作。
首先我通过 Google 进行身份验证,它工作正常并返回一个令牌:
POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=<firebase-api-key>
Accept: application/json
Content-Type: application/json
"email": "some@email.com",
"password": "notthispassword"
然后,尝试像这样从 firestore(不是 realtime-db)获取数据
GET https://firestore.googleapis.com/v1/projects/<projectId>/databases/(default)/documents/<collection>
Accept: application/json
Authorization: Bearer <token from auth response>
它一直在告诉我:
"error":
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
这些是我的 Firestore 安全规则:
rules_version = '2';
service cloud.firestore
match /databases/database/documents
match /document=**
allow read, write: if request.auth != null;
如果有人能告诉我哪里出了问题,我会很高兴。
【问题讨论】:
【参考方案1】:解决方案的第一部分是仔细阅读回复。它包含以下链接https://developers.google.com/identity/sign-in/web/devconsole-project。
然后我必须明白,如果您使用的是 google-identitiy-toolkit,您有点离开了 firebase-realm 并且 必须附加在 GC-console 中生成的 api-key(不是firebase-key!) (https://console.cloud.google.com/apis/credentials) 到用于获取数据的 URL,如下所示:
GET https://firestore.googleapis.com/v1/projects/<projectId>/databases/(default)/documents/<collection>?key=<google-cloud-api-key>
Accept: application/json
Authorization: Bearer <token from auth response>
【讨论】:
以上是关于Firestore REST API 使用 http-client 发出经过身份验证的请求的主要内容,如果未能解决你的问题,请参考以下文章
带有 Firebase Id 令牌的 Firestore REST API
Firestore REST API 使用 http-client 发出经过身份验证的请求
Google Cloud Firestore REST API createDocument 自动生成 ID
Android java:如何创建 POJO 并将其转换为 Cloud Firestore REST API 可接受的 JSON