使用Firebase Admin创建账户报错:项目编号不匹配问题排查
老哥,这种项目编号不匹配的坑我帮不少从旧Firebase迁移过来的开发者踩过,大概率是Admin SDK的初始化配置没跟上项目迁移的节奏,咱们一步步排查解决:
检查Admin SDK的凭据文件
如果你本地开发用了serviceAccountKey.json,打开这个文件看看里面的project_id字段是不是当前项目的编号。要是显示的是那个不存在的旧项目ID,就去Firebase控制台重新下载当前项目的服务账号密钥文件,替换掉本地的旧文件。
要是部署到云端的Functions,得确认有没有手动设置过GOOGLE_APPLICATION_CREDENTIALS环境变量指向旧密钥,或者代码里有没有硬编码旧项目的密钥内容——这些都会覆盖Firebase默认的项目凭据。确认Firebase CLI的关联项目
有时候CLI还挂着旧项目的关联,导致部署时用了错误的配置。打开终端运行:firebase projects:list看看列表里带星号的默认项目是不是你现在用的那个。如果不是,用这条命令切换:
firebase use <你的当前项目ID>检查Admin SDK的初始化代码
看看你初始化Admin的代码里有没有硬编码旧项目的参数,比如这种错误写法:admin.initializeApp({ projectId: "旧项目的编号" });正常情况下,Admin会自动加载当前项目的默认凭据,不需要手动指定
projectId,除非你确实需要跨项目操作。把硬编码的项目ID删掉,让它自动读取环境里的配置就行。清理缓存并重新部署
本地开发的话,先清理Functions的缓存:firebase functions:clear然后重启本地模拟器。云端部署的话,可以先删掉旧的函数实例,再重新部署:
firebase functions:delete <你的创建用户函数名> firebase deploy --only functions这样能确保新的配置完全覆盖旧的部署内容。
之所以其他功能正常,大概率是因为那些功能用的是客户端SDK,客户端SDK是直接从Firebase控制台的配置文件(比如firebaseConfig)读取项目信息,而Admin SDK依赖的是服务端凭据,迁移时容易忽略这部分的更新。
内容的提问来源于stack exchange,提问作者Chris

