切换Firebase项目后应用仍关联已删除旧项目,遇PERMISSION_DENIED错误
解决Firebase项目切换后仍连接旧项目导致的PERMISSION_DENIED错误
问题分析
你遇到的错误:
Stream closed with status: Status{code=PERMISSION_DENIED, description=Permission denied on resource project mots-dc640., cause=null}
核心原因是应用的代码或配置中仍残留旧Firebase项目mots-dc640的信息,导致请求被路由到已删除的旧项目,触发权限拒绝。
排查与修复步骤
替换配置文件
- Android项目:检查
google-services.json,确保是新项目的配置文件,直接删除旧文件替换。 - iOS项目:替换
GoogleService-Info.plist为新项目的配置文件。 - Web项目:检查
firebaseConfig对象里的projectId字段,确认值是新项目ID,而非mots-dc640。
- Android项目:检查
清除构建缓存
- Android:执行命令
./gradlew clean清除Gradle缓存后重新构建。 - iOS:在Xcode中选择
Product > Clean Build Folder,同时删除DerivedData目录。 - Web:用无痕模式测试,或手动清除浏览器缓存,避免旧配置被缓存。
- Android:执行命令
排查硬编码配置
- 全局搜索项目代码中的
mots-dc640,检查是否有硬编码的Firebase参数(比如数据库URL、存储桶地址),发现后替换为新项目对应的值。
- 全局搜索项目代码中的
调整Firebase CLI配置
- 若用Firebase CLI管理项目,执行
firebase use查看当前激活项目,若为旧项目,切换到新项目:firebase use <新项目ID>。
- 若用Firebase CLI管理项目,执行
更新环境变量
- 若项目用环境变量存Firebase配置,确认
FIREBASE_PROJECT_ID等参数已更新为新项目信息,重启应用服务生效。
- 若项目用环境变量存Firebase配置,确认
验证修复
完成上述步骤后重新运行应用,观察是否仍出现权限拒绝错误。若问题依旧,可删除应用本地存储数据(如Android的应用缓存、iOS的应用数据),彻底清除旧配置残留。
内容的提问来源于stack exchange,提问作者Jon-ElCapitan
相关产品推荐
相关产品推荐

