遇FCM认证报错如何为Firebase服务账号添加firebase admin角色
FCM推送认证报错解决方案
使用Firebase Cloud Function实现Firestore新增数据触发FCM推送时,常见报错如下:
Error: An error occurred when trying to authenticate to the FCM servers. Make sure the credential used to authenticate this SDK has the proper permissions.
该问题核心原因是云函数运行使用的服务账号缺少FCM推送所需的权限,给对应服务账号添加对应角色即可修复,具体操作路径如下:
服务账号角色添加操作步骤
- 进入Firebase控制台,打开目标项目的「项目设置」页面,点击页面内的GCP项目跳转入口,进入对应绑定的Google Cloud控制台
- 在Google Cloud控制台左侧导航栏找到「IAM与管理」分类,点击展开后选择「IAM」选项,进入项目权限配置列表
- 在权限列表中定位云函数运行所用的服务账号:默认部署的Cloud Functions使用的服务账号格式为
<你的项目ID>@appspot.gserviceaccount.com;如果是自定义初始化Admin SDK时指定了独立服务账号,找到对应密钥绑定的服务账号即可 - 点击对应服务账号行右侧的铅笔形状编辑按钮,进入主体权限编辑面板
- 点击面板内的「添加其他角色」按钮,在角色搜索框输入关键词检索:
- 如果需要全量管理权限,搜索
Firebase Admin SDK 管理员角色选中即可 - 如果遵循最小权限原则,直接搜索
Firebase Cloud Messaging Admin角色,仅开通FCM推送所需权限即可
- 如果需要全量管理权限,搜索
- 角色选择完成后点击「保存」,等待1-2分钟权限全局生效后,重新触发云函数即可正常调用FCM推送接口
额外排查点
- 权限添加后仍报错的话,先检查Admin SDK初始化代码:云函数运行环境内不需要手动传入服务账号密钥参数,直接调用
admin.initializeApp()即可自动继承运行环境的服务账号权限,手动传入本地下载的过期/错配密钥反而会触发认证失败 - 确认操作时没有切换错项目,多项目并行时很容易给非目标项目的服务账号加角色,导致配置不生效
- 如果部署云函数时指定了自定义服务账号,必须给该自定义账号加对应角色,给默认服务账号加角色不会生效
内容的提问来源于stack exchange,提问作者Jatu Tung
相关产品推荐
相关产品推荐

