You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中调用Cloud Firestore REST API写入数据时遇权限拒绝问题

问题分析与解决方案

你的403权限拒绝错误可从以下几个方向排查解决:

1. 数据库端点格式错误

Firestore REST API中,默认数据库的ID固定为(default),而非你使用的cloudfirestoredemo-2b423(这应该是你的项目ID)。正确的端点格式应为:
projects/[你的项目ID]/databases/(default)/documents/[集合名]

修改写入调用代码:

write.db("projects/cloudfirestoredemo-2b423/databases/(default)/documents/mydata", data, my_auth_info$idToken)

注意项目ID需与Google Cloud控制台中的一致,通常为全小写、无空格的格式。

2. Firestore规则未完成部署

即便你修改了规则,若未在Firebase控制台点击发布按钮,旧规则(可能是默认的仅允许认证用户或禁止所有访问)仍会生效。检查控制台规则状态,确保新规则已成功部署。

3. 项目ID拼写错误

你当前使用的CloudFirestoreDemo可能并非正确的项目ID。Google Cloud项目ID是唯一标识符,由小写字母、数字和连字符组成。登录Google Cloud控制台确认项目ID后,替换到端点路径中。

4. 数据格式优化(辅助验证)

虽不是权限错误的直接原因,但可优化请求体格式确保符合API要求:

data <- toJSON(
  list(fields = list(
    name = list(stringValue = "Gabriel"),
    favoriteNumber = list(integerValue = 32343)  # 无需加引号,jsonlite会自动处理整数类型
  )),
  auto_unbox = TRUE
)

额外验证步骤

  • 调用sign.in重新获取idToken,确认令牌有效性;
  • 使用Firebase控制台的规则播放功能,模拟写入请求验证规则是否允许访问;
  • 确认Google Cloud项目已启用Firestore API(403错误通常说明API已启用,但可再次核实)。

内容的提问来源于stack exchange,提问作者umair durrani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:05:17