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

从旧版FCM API迁移至HTTP v1后通知未收到,需更换密钥吗?

FCM v1 API 认证问题解决方案

核心结论:旧版Server Key无法用于FCM v1 API

FCM的v1版本API和旧版Legacy API(如https://fcm.googleapis.com/fcm/send)的认证机制完全不同:

  • 旧版Legacy API使用Firebase控制台生成的「Server Key」/「Legacy Server Key」;
  • v1 API必须使用OAuth 2.0访问令牌,该令牌需要通过Firebase服务账号的JSON密钥文件生成,旧Server Key在v1接口上完全无效。

所以你不是需要换Server Key,而是必须切换到v1 API对应的认证方式,或者退回旧版API继续使用原密钥。

你的代码里还有两个关键错误

  1. 请求路径格式错误:
    你当前的路径https://fcm.googleapis.com/v1/projects/projects/messages:send存在重复的projects字段,正确格式应为:

    https://fcm.googleapis.com/v1/projects/[你的Firebase项目ID]/messages:send
    

    需将重复部分替换为实际的项目ID。

  2. 请求体结构不符合v1要求:
    v1 API的请求体必须包裹在message字段内,而你当前的结构是旧版Legacy API的格式,示例正确结构:

    {
      "message": {
        "token": "目标设备FCM令牌",
        "data": {
          "command": "你的指令内容"
        }
      }
    }
    

两种可行修复方案

方案1:切换到v1 API的正确认证流程

  • 从Firebase控制台下载服务账号JSON密钥(路径:项目设置→服务账号→生成新私钥);
  • 使用Google的google/apiclient库生成OAuth 2.0访问令牌;
  • 将请求头改为Authorization: Bearer [生成的令牌];
  • 调整请求体为v1要求的结构。

方案2:退回旧版Legacy API

将请求路径改回旧版地址https://fcm.googleapis.com/fcm/send,保持原Server Key和请求体结构不变,即可正常发送通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:35:01