You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

两个Firebase项目共用一个数据库,Project B数据库请求被拒问题

解决跨Firebase项目访问数据库被拒绝的问题

看起来你遇到的核心问题是Firebase服务的项目ID绑定机制在搞事情——哪怕两个项目的apiKeydatabaseURL一致,只要projectId不同,Firebase后端就会把它们判定为完全独立的项目,自然会拒绝项目B访问项目A的数据库资源。

下面给你几个可行的解决思路,按简单程度排序:

1. 统一项目ID(最推荐)

直接把项目B的Hosting配置改成使用项目A的projectId(也就是ABC-eee47),而不是现在的DFG-eee47。Firebase的apiKeydatabaseURL其实是和项目ID对应的,项目B只需要用项目A的完整配置信息,就能正常访问项目A的Firestore、Storage等服务。

另外,Firebase Hosting支持在同一个项目下部署多个站点,如果你不想改动项目B的部署流程,完全可以把项目B的站点加到项目A的Hosting服务里,这样两个站点都归属同一个项目ID,数据库访问自然不会有问题。

2. 启用项目B的对应服务并配置跨项目访问(不推荐,太繁琐)

如果一定要保留两个独立的项目ID,那你需要:

  • 在项目B的Firebase控制台中,启用Firestore、Storage、Auth这些你需要访问的服务
  • 手动配置项目A的安全规则,允许来自项目B的请求(比如通过验证请求的来源项目ID)
  • 还要处理跨项目的权限委托,比如使用Firebase IAM角色来授权项目B的服务账号访问项目A的资源

这种方式步骤多,后期维护成本高,除非有特殊业务需求,否则不建议这么做。

额外检查点

确认项目B的Firebase初始化代码里,所有配置参数都和项目A保持一致,尤其是projectId——别小看这个参数,它是Firebase后端识别项目归属的核心标识,一旦不匹配,所有跨项目的资源请求都会被拦截。

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

火山引擎 最新活动