api - 带有 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;
}
}
}
即使在提供密钥后,我也会收到“权限缺失或权限不足”错误,
解决方案
在 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 用户或未经身份验证的访问。
推荐阅读
- c# - C#:如何忽略来自 Tesseract 的日志?
- android-jetpack-compose - Jetpack Compose 如何使用 CursorLoader 获取全包专辑
- c# - 如何使用 Identity Windows 身份验证将“拒绝访问”页面添加到 .Net 5 WebApp
- windows - 如何将程序放入 Windows 启动
- plot - GEMTC中关于森林图的问题:如何适应学习体重
- sql - 在 NUMTODSINTERVAL() 中不能使用超过 90 分钟
- python - 划分不同字典结构的2个字典
- javascript - index.js 中定义的变量会转移到其他脚本吗?
- html - Xpath:如何通过列中的元素识别表中的行?
- php - 如何在我的插件选项页面中更改正文颜色?