Firebase 云消息传递 - 发布消息显示 JSON 有效负载无效

问题描述 投票:0回答:2

因此,我使用 jQuery Ajax 来使用不记名令牌进行发布,我必须从某人的 node.js 应用程序中获取该令牌,因为我找不到有关如何使用您的首选语言获取不记名令牌以供 FCM 使用的 Google 文档仅有的。我正在使用

JSON.stringify
来准备有人在 stackoverflow 上显示的有效负载数据。我尝试过不使用,但只收到基本错误消息
Invalid_Arguments
。使用
JSON.stringify
显示更多错误信息。它指出
"to"
和“
notification
”属性是未知名称,但这些是 Google 文档中使用的属性名称。那我做错了什么?

这是有人说

JSON.stringify
有效的链接。在此之前,我尝试不使用
JSON.stringify
,这导致了
Invalid JSON Payload
以及我问这个问题的原因。

通过ajax向firebase云消息发送post请求?

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"to\": Cannot find field.\nInvalid JSON payload received. Unknown name \"notification\": Cannot find field.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"to\": Cannot find field."
          },
          {
            "description": "Invalid JSON payload received. Unknown name \"notification\": Cannot find field."
          }
        ]
      }
    ]
  }
}


$.post({
            method: "POST",
            url: "https://fcm.googleapis.com/v1/projects/floridarecycling-b91ec/messages:send",
            dataType: "json",
            contentType: "application/json",
            headers: {
                'Authorization': 'Bearer ' +
                    'ya29.c.ElqUBiCx...wyKqUqKlrg7yhPw'
            },
            data: JSON.stringify({
                "to": "user_token",
                "notification": {
                    "title": "Test",
                    "body": "test"
                }
            })
            success: function () {
                console.log("Success")
            },
            error: function (err) {
                console.log("error ", err)
            }
        });`
firebase firebase-cloud-messaging
2个回答
0
投票
headers = {
    'Content-Type': 'application/json',
    'Authorization':  'key=' + serverToken,
}

body = {
    'notification': {'title': title,'body': message},
    'to': deviceToken,
    'priority': 'high',
}

以上配置对我来说效果很好,只需查看一下即可。而且我没有使用

JSON.stringify


-1
投票

您正在将旧版 JSON 发送到 v1 端点。

如果您使用“收件人”字段,则需要发送到旧版 Firebase 云消息传递端点,即:

 https://fcm.googleapis.com/fcm/send

如果您想使用新的 Firebase 云消息传递,新格式和参数的文档位于此处:

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages

© www.soinside.com 2019 - 2024. All rights reserved.