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

如何将旧版FCM HTTP请求迁移至HTTP V1协议?非Google服务器环境下如何获取FCM V1授权令牌?

解决非Google平台服务器的FCM V1协议授权问题

Hey there! 针对你在非Google平台服务器上迁移FCM到V1协议的授权困惑,我给你整理了两种最适配的方案,完全不需要依赖Google云运行环境:

方案1:使用服务账户JSON文件(推荐,实现简单)

这是最省心的方式,借助Firebase Admin SDK可以自动处理令牌的获取和刷新,不用手动拼接授权头:

  1. 获取服务账户JSON文件
    打开你的Firebase控制台 → 进入项目设置 → 切换到「服务账户」标签页 → 点击「生成新的私钥」,下载JSON文件后,把它放到服务器的安全目录下(绝对不要提交到公共代码仓库)。

  2. 用Admin SDK初始化授权
    根据你服务器的编程语言,引入Firebase Admin SDK并初始化,SDK会自动读取JSON文件完成授权:
    示例(Java):

    FileInputStream serviceAccount = new FileInputStream("/path/to/your-service-account.json");
    
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
    
    FirebaseApp.initializeApp(options);
    

    初始化完成后,你调用SDK的FCM发送接口时,它会自动带上有效的Authorization: Bearer <token>头,完全不用你手动处理令牌。

方案2:手动生成短期OAuth 2.0访问令牌

如果不想依赖Admin SDK,想自己处理HTTP请求,可以手动生成令牌:

  1. 准备服务账户信息
    同样先获取服务账户JSON文件,提取里面的client_email(服务账户邮箱)和private_key(RSA私钥)。

  2. 创建并签名JWT
    构造一个JWT payload,包含以下必填字段:

    • iss: 服务账户的client_email
    • scope: https://www.googleapis.com/auth/firebase.messaging(FCM的授权范围)
    • aud: https://oauth2.googleapis.com/token(令牌请求的端点)
    • exp: 当前时间戳 + 3600(令牌有效期最多1小时)
    • iat: 当前时间戳
      用JSON文件里的private_key以RS256算法对JWT进行签名。
  3. 请求访问令牌
    向https://oauth2.googleapis.com/token发送POST请求,参数如下:

    • grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
    • assertion: 签名后的完整JWT字符串
      响应会返回access_token字段,这个就是你需要的Bearer令牌,直接拼接成Authorization: Bearer <access_token>即可用于FCM V1请求。注意令牌1小时后过期,需要定时重新生成。

注意事项

  • 务必保证服务账户JSON文件的安全性,一旦泄露,攻击者可以冒充你的服务器发送通知给用户。
  • 优先选择方案1,Admin SDK不仅简化了授权流程,还会自动处理令牌刷新、错误重试等细节,减少运维成本。
  • 测试时可以用curl发送测试请求验证令牌有效性,比如:
    curl -X POST "https://fcm.googleapis.com/v1/projects/your-project-id/messages:send" \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "message": {
          "token": "USER_DEVICE_TOKEN",
          "notification": {
            "title": "Test",
            "body": "Hello from FCM V1"
          }
        }
      }'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:37:35