Firebase扩展安装/卸载遇权限错误:使用不存在的服务账户,Service Usage API失败
解决Firebase扩展权限拒绝及服务账户缺失问题
核心问题分析
你遇到的权限拒绝错误,根源是Firebase默认依赖的<PROJECT_ID>@cloudservices.gserviceaccount.com服务账户缺失,同时Service Usage API调用失败导致无法自动启用扩展所需服务。这个账户是Firebase管理扩展的默认服务账户,可能因项目初始化异常、误删等原因丢失。
具体解决步骤
先修复Service Usage API调用失败问题
- 登录Google Cloud控制台,进入「API和服务」>「库」
- 搜索并启用
Service Usage API - 同时检查扩展依赖的其他核心服务(如Cloud Functions、Firestore、Cloud Storage等)是否已启用,确保没有遗漏
手动重建缺失的默认服务账户
- 进入Google Cloud控制台的「IAM与Admin」>「服务账户」
- 点击「创建服务账户」,账户名填写
cloudservices,系统会自动生成<PROJECT_ID>@cloudservices.gserviceaccount.com的邮箱 - 为该账户添加必要权限:
- Firebase Admin SDK Administrator Service Agent
- Service Usage Admin
- 对应扩展所需的权限(比如安装Storage扩展需添加Storage Admin,安装Auth扩展需添加Firebase Auth Admin,可参考扩展官方文档的权限要求)
- 保存后,重新尝试安装或卸载Firebase扩展
指定自定义服务账户运行扩展
如果你想替换默认服务账户,可在安装扩展时手动指定自定义账户:- 先在Google Cloud控制台创建一个自定义服务账户,并赋予它扩展所需的全部权限
- 使用Firebase CLI安装扩展时,添加
--service-account参数:firebase ext:install <你的扩展ID> --service-account=自定义账户邮箱@<PROJECT_ID>.iam.gserviceaccount.com
注意:已安装的扩展无法直接更换服务账户,需卸载后重新安装并指定新账户
重置Firebase项目的服务账户关联
如果上述方法无效,可尝试重置项目的服务账户关联:- 进入Firebase控制台的「项目设置」>「服务账户」
- 点击「生成新的私钥」,下载生成的JSON密钥文件
- 在本地终端运行以下命令重新配置Firebase CLI:
firebase use --add # 选择你的目标项目,然后指定刚下载的密钥文件路径
内容的提问来源于stack exchange,提问作者Gremash
相关产品推荐
相关产品推荐

