迁移FCM后新注册令牌发通知遇403 SenderId Mismatch错误
GCM迁移FCM后发送通知遇403(SENDER ID MISMATCH)问题排查
问题背景
将Web项目从旧版GCM迁移至FCM后,执行了以下操作:
- 服务器端修改请求地址为
https://fcm.googleapis.com/v1/projects/{my-project-id}/messages:send - 前端
pushManager.subscribe添加Firebase Web Push证书的applicationServerKey,并移除manifest.webmanifest中的gcm_sender_id - 新注册令牌可正常获取并保存,但向新令牌发送通知时返回403 Forbidden,错误信息为
SENDER ID MISMATCH;GCM时期的旧令牌发送无异常 - 已确认Google Cloud与Firebase项目ID一致、关联同一账号,新建项目后问题仍存在
排查及解决方法
恢复
manifest.webmanifest中的固定Sender ID
Web推送场景下,即使迁移到FCM,也必须在manifest中保留"gcm_sender_id": "103953800507"(这是Google通用的固定Sender ID,并非你的项目ID)。移除该字段会导致新订阅生成的令牌关联的Sender ID不匹配,触发403错误。恢复后需让用户重新订阅获取新令牌。验证
applicationServerKey的正确性
前端使用的VAPID密钥(即applicationServerKey)必须与当前FCM项目绑定。前往Firebase控制台→项目设置→云消息传递→Web配置,确认密钥归属,若有误则重新生成并替换前端配置。检查服务器端服务账号权限
使用FCM v1 API时,服务器端认证用的服务账号需拥有Firebase Cloud Messaging Admin角色:- 登录Google Cloud控制台→IAM与管理员→IAM
- 找到对应的服务账号,检查角色列表
- 若缺少该角色,点击编辑→添加角色,搜索并选择
Firebase Cloud Messaging Admin
确认新令牌的Sender ID归属
可通过FCM测试工具验证新令牌绑定的Sender ID是否与项目一致。若不一致,说明前端订阅流程仍有配置错误,需重新核对VAPID密钥和manifest配置。
内容的提问来源于stack exchange,提问作者Sim
相关产品推荐
相关产品推荐

