发送邮件时Google FCM Invalid_argument

Wad*_*acy 5 android firebase firebase-cloud-messaging

我正在尝试弄清楚如何使用Firebase向Android发送推送通知,并使用旧版HTTP(https://fcm.googleapis.com/fcm/send)进行工作,但文档建议使用较新的端点(https: //fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send).我似乎无法让它工作,因为我一直得到这样的回应:

{
    "error": {
        "code": 400,
        "message": "Request contains an invalid argument.",
        "status": "INVALID_ARGUMENT"
    }
}
Run Code Online (Sandbox Code Playgroud)

使用https://firebase.google.com/docs/cloud-messaging/send-message#send_messages_to_specific_devices上的示例进行此操作:

POST https://fcm.googleapis.com/v1/projects/project-916177026973/messages:send HTTP/1.1
cache-control: no-cache
Postman-Token: 81403929-77ba-4568-8681-a854527ccb22
Content-Type: application/json
Authorization: Bearer <token redacted>
User-Agent: PostmanRuntime/6.4.1
Accept: */*
Host: fcm.googleapis.com
accept-encoding: gzip, deflate
content-length: 319
Connection: close

{
  "message":{
    "token" : <token redacted>,
    "notification" : {
      "body" : "This is an FCM notification message!",
      "title" : "FCM Message",
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试删除最后一个逗号以使其符合JSON并仍然没有运气.有任何想法吗?

Bar*_*rns 3

正如 OP 指出的那样,如果您想通过 HTTP 发送消息,Firebase 现在会建议 FCM v1 端点。

要通过 HTTP 发送消息,请将 HTTP POST 请求发送到 FCM v1 端点并指定发送方法。端点 URL 必须包含您的应用的 Firebase 项目的项目 ID,可在 Firebase 控制台的常规项目设置选项卡中找到。

它看起来像这样:

POST https://fcm.googleapis.com/v1/projects/your_project_id_here/messages:send HTTP/
Run Code Online (Sandbox Code Playgroud)

URL 部分your_project_id_here您的项目 ID。您需要project IdSettings您的项目的 Firebase 控制台部分的 选项卡下找到特定于项目的项目General

寻找Project ID。如果您对自己的正确性有任何疑问,Project ID那么网站地址中的 URL 也是您项目的一部分。看起来像:

https://console.firebase.google.com/project/your_project_id_here/settings/general/android:your_project_name
Run Code Online (Sandbox Code Playgroud)