You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移FCM APIs至HTTP v1后遇SENDER_ID_MISMATCH 403错误求助

FCM V1 推送通知发送失败的可能原因

结合你描述的迁移操作和代码,以下是几个常见的排查方向:

1. 服务账号权限不足

仅拥有对应项目的服务账号JSON文件不够,需要确保该服务账号已被授予 Cloud Messaging Admin IAM角色:

  • 进入Google Cloud控制台的IAM页面
  • 找到该服务账号,添加roles/firebase.messagingAdmin角色
  • 保存后等待权限生效(通常几分钟)

2. 请求体格式不符合FCM V1规范

FCM V1的请求体结构与旧版API差异较大,常见错误包括:

  • 使用旧版的to字段而非message.token/message.topic
  • 未正确嵌套notification或data字段在message对象内
  • 缺少必填字段(如message.token或message.topic)
  • 字段类型错误(比如data必须是键值对字符串,不能有嵌套对象)

3. 设备令牌无效或未注册

即使认证通过,无效的设备令牌会导致推送失败:

  • 确认设备令牌是通过FCM V1客户端SDK获取的(旧版SDK生成的令牌可能不兼容)
  • 检查令牌是否已过期、被用户撤销,或不属于当前Firebase项目
  • 可以通过FCM控制台的"测试消息"功能验证令牌有效性

4. 请求头配置错误

确保Postman的请求头满足以下要求:

  • 必须包含Content-Type: application/json
  • Authorization头格式严格为Bearer <生成的令牌>,无多余空格或拼写错误
  • 确认请求URL中的project_id与服务账号JSON中的project_id完全一致

5. 令牌生成或有效性问题

  • 检查生成的令牌是否包含正确的权限范围:解码令牌(可使用JWT解码工具),确认scope字段包含https://www.googleapis.com/auth/firebase.messaging
  • 确保每次请求使用的是新鲜令牌(FCM令牌有效期通常为1小时,过期会导致认证失败)
  • 验证C#代码是否正确读取了环境变量,生成的令牌是否有效(可将生成的令牌直接用于Postman测试)

6. 网络或防火墙限制

  • 确认Postman所在网络可以访问FCM的API端点https://fcm.googleapis.com/v1/projects/{project_id}/messages:send
  • 检查是否有防火墙、代理或安全组阻止了HTTPS请求到该域名

内容的提问来源于stack exchange,提问作者yurart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 17:05:07