ASP.NET MVC 项目 FCM 推送通知报 MismatchSenderId 错误求助
MismatchSenderId错误原因
MismatchSenderId本质是FCM服务端校验请求身份和客户端令牌所属身份不匹配导致,即便你确认Sender ID填写正确,也可能由以下问题触发:
- Server Key与Sender ID不匹配:你当前代码中使用的Server Key和Sender ID不属于同一个Firebase项目,或者Server Key后续在Firebase控制台被重置,代码中没有同步更新,仅校验Sender ID无法发现该类问题。
- 客户端FCM令牌所属项目不匹配:客户端生成
fcmToken时使用的Firebase配置文件(安卓的google-services.json、iOS的GoogleService-Info.plist),和你服务端用的Sender ID/Server Key所属的不是同一个Firebase项目,比如近期客户端更新过包名、替换过Firebase项目配置,新生成的令牌就会和旧服务端配置不匹配。 - 请求头配置错误:你代码中
httpWebRequest.ContentType赋值为application/x-www-urlencoded,但实际提交的是JSON格式的请求体,格式不匹配会导致FCM服务端解析请求头异常,误触发身份校验失败错误。 - 密钥存在隐藏空白字符:你示例代码中的
serverKey字符串末尾带有空格,这类前后空白字符会导致Authorization头校验失败,也会返回该错误。
解决建议
- 先修正代码明确错误:将
ContentType改为application/json,删除serverKey字符串前后所有空白字符。 - 核对Firebase项目配置:登录Firebase控制台进入对应项目的「项目设置」-「云消息传递」页面,逐字符核对代码中的Server Key、Sender ID和控制台显示的值完全一致,且属于同一个项目。
- 校验客户端令牌一致性:确认当前报错的
fcmToken生成时所用的客户端Firebase配置,和服务端配置属于同一个项目,近期如果有客户端Firebase配置变更,需要同步更新服务端对应密钥。 - 隔离测试定位问题:使用Firebase控制台自带的测试推送功能,填入报错的
fcmToken发送测试通知,如果推送成功则问题出在服务端配置,如果推送失败则是令牌本身和当前项目不匹配。 - 回滚验证:如果该问题是近期才出现,回滚最近改动的推送相关配置、客户端配置,确认问题是否消失,定位具体触发改动点。
内容的提问来源于stack exchange,提问作者Cihan Kalmaz
相关产品推荐
相关产品推荐

