升级FCM HTTP v1 API时遇SenderId mismatch 403错误求助
解决FCM HTTP v1 API的「SenderId mismatch」403错误
以下是针对该错误的排查与解决步骤:
1. 核对项目SenderId与设备Token的归属
设备Token由特定Firebase项目的SenderId生成,必须确保:
- 你使用的
service-account.json所属的Firebase项目,和生成deviceToken的项目完全一致。 - 检查方式:登录Firebase控制台→进入目标项目→「项目设置」→「云消息传递」,查看项目的Sender ID;对比设备端获取Token时配置的SenderId是否完全匹配。
2. 修正API请求URL中的项目ID拼写错误
你的代码中请求URL里的projct_id是拼写错误(缺失字母e),需替换为真实的Firebase项目ID(可直接从service-account.json的project_id字段复制):
// 原错误URL 'https://fcm.googleapis.com/v1/projects/projct_id/messages:send' // 修正后(替换为你的真实项目ID) 'https://fcm.googleapis.com/v1/projects/your-real-project-id/messages:send'
3. 简化代码:直接使用Firebase Admin SDK发送消息
你已初始化Firebase Admin SDK,无需手动通过google-auth-library获取Token再用axios发起请求——Admin SDK已封装完整的FCM发送逻辑,代码更简洁且不易出错:
修改sendFcmMessage函数如下:
async function sendFcmMessage(message) { try { const response = await admin.messaging().send(message); console.log('Successfully sent message:', response); } catch (error) { console.error('Error sending message:', error); } }
4. 验证设备Token的有效性
若设备Token是旧数据、或来自其他Firebase项目,也会触发该错误。可尝试在设备端重新生成Token,确保其为当前项目下的有效Token。
内容的提问来源于stack exchange,提问作者Vidhi Softweb
相关产品推荐
相关产品推荐

