发送FCM通知时出现SENDER_ID_MISMATCH错误求助
解决FCM通知发送中的SENDER_ID_MISMATCH错误
刚踩过这个坑,给你整理几个最核心的排查方向,帮你快速解决这个403错误:
首先先明确你遇到的错误信息:
Caused by: com.google.api.client.http.HttpResponseException: 403 Forbidden
{ "error": { "code": 403, "message": "SenderId mismatch", "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError", "errorCode": "SENDER_ID_MISMATCH" } ] } }
这个错误本质就是发送通知的服务器端凭据对应的Sender ID,和客户端注册FCM Token时用的Sender ID不是同一个,下面是具体的排查步骤:
确认跨端Sender ID完全一致
客户端注册FCM时,google-services.json里的project_number就是你的Sender ID;服务器端用来发通知的凭据(Server Key或服务账号)必须属于同一个Firebase项目。你可以这么核对:- 打开Firebase控制台,进入你的项目→「项目设置」→「云消息传递」,查看当前项目的Sender ID;
- 找到客户端的
google-services.json文件,搜索project_number字段,对比两者是否完全相同(注意不要有空格、大小写错误); - 如果用的是服务账号,去Google Cloud控制台的「IAM与管理员」→「服务账号」,查看该账号所属的项目ID是否和Firebase项目一致。
验证FCM Token的归属
如果客户端之前切换过Firebase项目,或者缓存了旧的Token,就会导致不匹配。建议:- 在客户端主动调用Token刷新方法(比如Android上的
FirebaseMessaging.getInstance().getToken()),获取最新的Token后重新测试; - 清理客户端的应用数据,确保没有残留的旧Token被使用。
- 在客户端主动调用Token刷新方法(比如Android上的
检查服务器端凭据的权限与正确性
- 若使用Server Key:确保这个Key是从正确的Firebase项目「云消息传递」页面获取的,且没有设置IP限制(或者你的服务器IP在允许列表中);
- 若使用服务账号:确认服务账号已经被授予「Cloud Messaging Admin」角色,并且初始化FCM客户端时使用的是该项目的服务账号密钥文件(
service-account-key.json)。
内容的提问来源于stack exchange,提问作者Kubera
相关产品推荐
相关产品推荐

