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

能否不使用SDK调用Firebase Cloud Messaging?非官方支持语言适配HTTP v1疑问

可以通过原生HTTP请求实现FCM HTTP v1调用

不管使用哪种无官方SDK支持的编程语言,完全可以通过原生HTTP请求对接FCM HTTP v1接口,核心是搞定认证流程和请求格式:

1. 完成OAuth2认证获取访问令牌

FCM HTTP v1要求请求携带有效的OAuth2访问令牌,获取流程如下:

  • 从Firebase控制台下载服务账号密钥(JSON格式),从中提取client_email和private_key两个核心字段。
  • 使用你的编程语言实现JWT签名:
    • 设置JWT的头部为{"alg": "RS256", "typ": "JWT"}
    • 设置JWT的payload,包含:
      • iss:填服务账号的client_email
      • scope:固定为https://www.googleapis.com/auth/firebase.messaging
      • aud:固定为https://oauth2.googleapis.com/token
      • exp:过期时间(建议设为当前时间+3600秒,即1小时)
      • iat:签发时间(当前时间戳)
    • 用服务账号的private_key对JWT进行RS256签名。
  • 将签名后的JWT发送到https://oauth2.googleapis.com/token,请求参数为:
    • grant_type:固定为urn:ietf:params:oauth:grant-type:jwt-bearer
    • assertion:填刚才生成的签名JWT
  • 接口会返回包含access_token的响应,这个令牌就是后续调用FCM所需的认证凭证。

2. 构造FCM HTTP v1推送请求

拿到访问令牌后,就可以发起推送请求:

  • 请求URL:https://fcm.googleapis.com/v1/projects/{你的项目ID}/messages:send
  • 请求头:
    • Authorization: Bearer {刚才获取的access_token}
    • Content-Type: application/json
  • 请求体格式示例(以发送到单个设备为例):
{
  "message": {
    "token": "目标设备的FCM令牌",
    "notification": {
      "title": "推送标题",
      "body": "推送内容"
    },
    "data": {
      "custom_key": "自定义数据"
    }
  }
}

示例(用curl模拟原生HTTP逻辑)

# 第一步:生成JWT并获取令牌(这里省略JWT签名步骤,实际需用对应语言实现)
# 假设已获取到access_token=xxx

# 第二步:发送推送请求
curl -X POST "https://fcm.googleapis.com/v1/projects/你的项目ID/messages:send" \
  -H "Authorization: Bearer xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "message": {
      "token": "DEVICE_TOKEN",
      "notification": {
        "title": "测试推送",
        "body": "这是一条通过原生HTTP发送的FCM推送"
      }
    }
  }'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:10:06