我正在尝试通过其 REST API 和curl 在 Firebase Cloud Firestore 数据库中插入新记录。
由于操作是公开的,因此从数据库中读取数据可以按预期进行。创建操作未在数据库规则中列出,并且仅在服务器端执行,但我无法仅使用项目 API KEY 来执行此操作。
以以下curl请求为例:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"fields":{"myField": {"stringValue": "test"}}}' \
https://firestore.googleapis.com/v1/projects/**MY_PROJECT**/databases/\(default\)/documents/**MY_COLLECTION**?key=**MY_KEY**
上述请求返回“403:缺少或权限不足。”。提供的 api 密钥是从 Firebase 项目的设置 -> Web API 密钥中获取的。
我是否遗漏了某些内容,或者无法仅通过 API 密钥进行身份验证?
附注我忘了提及 API KEY 在 GCP 仪表板中不受限制。
Firestore REST API 不支持传递 API 密钥。你会注意到,在文档,没有提到“关键”参数。
如果您想使用 REST API 执行经过身份验证的操作,则必须遵循以下文档:认证和授权。总结一下:
对于身份验证,Cloud Firestore REST API 接受
Firebase 身份验证 ID 令牌或 Google Identity OAuth 2.0 令牌。
您提供的令牌会影响您的请求的授权:
使用 Firebase ID 令牌对来自应用程序用户的请求进行身份验证。对于这些请求,Cloud Firestore 使用 Cloud
Firestore 安全规则用于确定请求是否获得授权。
使用 Google Identity OAuth 2.0 令牌和服务帐户对来自应用程序的请求进行身份验证,例如
数据库管理。对于这些请求,Cloud Firestore 使用
Cloud Identity and Access Management (IAM) 以确定请求是否
被授权。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)