在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
相关产品推荐
相关产品推荐

