不使用Auth 2.0认证可否通过REST API连接Firestore Database?
解决Firestore REST API无OAuth2认证访问的方案
你之前请求返回空对象,大概率是请求被Firestore默认的安全规则拦截,默认规则会拒绝所有未携带有效认证令牌的请求,调整安全规则后即可正常返回数据。目前有两种无需使用OAuth2访问令牌的调用方案:
方案1:使用Firebase Web API密钥调用
- 第一步在Firebase控制台「项目设置」-「通用」页面获取项目的Web API密钥
- 将API密钥作为
key查询参数追加到原请求URL末尾,示例请求如下:curl --location --request GET 'https://firestore.googleapis.com/v1/projects/{project-id}/databases/(default)/documents/{集合名}/{文档ID}?key={你的Web API密钥}' - 第二步修改Firestore安全规则,开放对应资源的未认证读权限,规则示例如下:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 示例:仅开放test集合下所有文档的读权限 match /test/{document=**} { allow read: if true; allow write: if false; } } }
提示:该方案可以最小范围控制公开的资源范围,降低数据泄露风险。
方案2:全公开无密钥调用
如果完全不需要访问控制,可直接修改Firestore安全规则开放全库读权限,此时不需要携带任何密钥或令牌即可直接调用API:
- 安全规则配置示例:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { allow read: if true; allow write: if false; } }
- 直接调用原始请求即可获取数据:
curl --location --request GET 'https://firestore.googleapis.com/v1/projects/{project-id}/databases/(default)/documents/{集合名}/{文档ID}'
重要警告:以上两种方案都会将配置范围内的数据库资源完全公开,所有知道请求地址的人均可读取对应数据,请不要在生产环境存储敏感信息时使用以上配置。
内容的提问来源于stack exchange,提问作者iamafasha
相关产品推荐
相关产品推荐

