Google 将于 2024 年 6 月弃用用于发送 Firebase Cloud Messaging 推送通知的旧版 HTTP 协议。他们的迁移指南仅提到如何使用 Node.js、Java、Python、Go 或C#。
主要障碍似乎是 HTTP v1 所需的身份验证过程。查看 Firebase 身份验证 的指南,似乎也只有 Node.js、Java、Python、Go 或 C# 的选项。
如果我想使用其他没有 SDK 的语言怎么办?可以用原始 HTTP 请求来完成吗?
通过 v1 REST API 通过 Firebase Cloud Messaging 发送消息的有线协议已完整记录,例如文档中的代码片段将消息发送到特定设备:
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"body":"This is an FCM notification message!",
"title":"FCM Message"
}
}
}
您可以编写自己的代码,向同一端点发送此消息格式,并绕过对 SDK 的需求。
授权对此 API 的请求记录在here,其中表示:
FCM HTTP v1 API 使用短期 OAuth 2.0 访问令牌授权请求。要创建此令牌,您可以使用 Google 应用程序默认凭据(在 Google 服务器环境中)和/或从为服务帐户生成的 JSON 私钥文件中手动获取所需的凭据。
虽然文档仅包含使用 SDK 的代码片段,但您可以使用任何想要获取 OAuth 2 令牌的方法。例如,搜索 在没有 sdk 的情况下从 google 获取 oath 2 令牌 会得到这个有希望的结果:如何在没有 api 库的情况下从 Google 获取访问令牌?