使用Firebase推送设备通知遇messaging/mismatched-credential错误求助
解决Firebase发送通知时的
messaging/mismatched-credential错误 这个错误我太熟悉了,本质就是你的消息发送凭证和目标设备的注册令牌不属于同一个Firebase项目,下面给你一步步排查解决的方法:
先确认注册令牌的来源
去设备端检查配置文件:Android看google-services.json,iOS看GoogleService-Info.plist,确保这些文件是从你当前用来发通知的Firebase项目下载的。如果设备是从另一个项目获取的令牌,那肯定会报这个错。核对发送通知的凭证
- 如果用的是Firebase Admin SDK,检查你加载的服务账号密钥(
.json文件)是不是来自目标项目的“设置→服务账号”页面下载的,别拿成其他项目的密钥了。 - 如果用的是HTTP API发送,确认请求里的
Server Key是当前项目“云消息传递”页面里的那个,不是其他项目的密钥。
- 如果用的是Firebase Admin SDK,检查你加载的服务账号密钥(
用控制台快速验证
打开Firebase控制台,进入“云消息传递”→“发送测试消息”,把你报错的那个注册令牌粘贴进去发送。如果能成功收到,说明令牌本身没问题,问题出在你代码里用的凭证;如果还是失败,那这个令牌大概率来自其他项目,或者已经失效了。刷新注册令牌
有时候令牌会因为设备卸载重装、应用清除数据等情况失效,让设备重新获取一次最新的注册令牌,再用正确的凭证发送试试。检查服务账号权限
确保你用来发通知的服务账号拥有Cloud Messaging Admin权限,不过默认情况下项目的服务账号都会有这个权限,除非你手动修改过权限配置。
内容的提问来源于stack exchange,提问作者Joe Scotto
相关产品推荐
相关产品推荐

