首页 > 解决方案 > 带有 Google Identity OAuth 2.0 令牌的 Firestore 的 REST API

问题描述

我想使用以下 url https://firestore.googleapis.com/v1beta1/projects/ {projectid}/databases/(default)/documents/products?key={apikey}将 REST API 用于 firestore

数据库的当前规则是

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

即使在提供密钥后,我也会收到“权限缺失或权限不足”错误,

标签: apioauthgoogle-cloud-firestore

解决方案


在 REST API 中传递关键参数与安全规则没有任何关系。您显示的规则将访问权限限制在您的应用中当前已通过 Firebase 身份验证并拥有Firebase ID 令牌的用户:

使用 Firebase ID 令牌

您可以通过两种方式获取 Firebase ID 令牌:

  • 使用 Firebase 身份验证 REST API 生成 Firebase ID 令牌。
  • 从 Firebase 身份验证 SDK 检索用户的 Firebase ID 令牌。

通过检索用户的 Firebase ID 令牌,您可以代表用户发出请求。

对于使用 Firebase ID 令牌进行身份验证的请求和未经身份验证的请求,Cloud Firestore 使用您的 Cloud Firestore 安全规则来确定请求是否获得授权。

如果您尝试使用 Firebase 或 Oauth 令牌进行身份验证,则应按照文档中的说明传递它:

使用访问令牌进行身份验证

获取 Firebase ID 令牌或 Google Identity OAuth 2.0 令牌后,将其作为设置为 Bearer {YOUR_TOKEN} 的授权标头传递给 Cloud Firestore 端点。

请注意,使用服务帐户进行身份验证始终会绕过所有安全规则。它们仅适用于 Firebase 用户或未经身份验证的访问。


推荐阅读