Firebase Cloud Firestore REST API能否只使用WEB API密钥进行身份验证?

4

我正在尝试通过Firebase Cloud Firestore的REST API和curl向数据库中插入新的记录。

由于该操作是公开的,因此从数据库中读取的操作与预期相符。在数据库规则中未列出创建操作,仅在服务器端执行,但我无法仅使用项目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密钥进行身份验证不可能?

p.s. 我忘记提到API KEY在GCP仪表板中是无限制的。

1个回答

3
Firestore REST API不支持传递API密钥。在文档中,没有提到“key”参数。
如果您想使用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和访问管理(IAM)来确定请求是否被授权。

但是这个键有什么用呢?另外,如果我尝试传递不同的查询参数(例如 auth),响应错误会显示没有这样的参数存在,但对于 key 则保持沉默。 - unknown1276
它用于客户端应用程序配置。大多数情况下,您不必直接使用它。它不授予任何特殊访问权限。 - Doug Stevenson
谢谢。我最近才开始使用GCP,但是我感到困惑,因为在控制台中,同一个API密钥被列为“服务器密钥(由Firebase自动创建)”,我最初认为我可以将其用于服务器端授权。那我会检查OAuth 2身份验证API。 - unknown1276

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接