【问题标题】:Firebase Cloud Messaging - Posting Message Says Invalid JSON PayloadFirebase 云消息传递 - 发布消息说 JSON 有效负载无效
【发布时间】:2019-06-12 00:18:25
【问题描述】:

所以我使用 jQuery Ajax 发布使用我必须从某人的 node.js 应用程序获取的不记名令牌,因为我找不到有关如何使用您的首选语言获取不记名令牌的 Google 文档仅限 FCM 使用。我正在使用JSON.stringify 准备有人在此处的stackoverflow 上显示的有效负载数据。我试过没有,但我只收到Invalid_Arguments 的基本错误消息。使用JSON.stringify 会显示更多错误。它指出 "to" 和 "notification" 属性是未知名称,但它们是 Google 文档中使用的属性名称。那我做错了什么?

这是有人说JSON.stringify 工作的链接。在此之前,我尝试不使用JSON.stringify,这导致Invalid JSON Payload 和我提出这个问题的原因。

send post request to firebase cloud messaging by ajax?

{
  "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)
            }
        });`

【问题讨论】:

  • 仅供参考,您可以使用编辑器中的 {} 按钮缩进代码块。
  • 我总是尝试,但每次我做的页面错误,我不能发布。如果我删除页面上的每个字符,我仍然会显示存在错误,我必须丢弃并重新开始。但感谢您的编辑。
  • “错误输出”是什么意思?人们一直将文本格式化为代码。
  • 如果我错了,请纠正我,但JSON.stringify 不返回 String 值吗?该请求需要一个实际的 JSON 有效负载。不是 JSON 格式的字符串(不确定是否仅通过设置 contentType 会立即处理)您可以尝试sending the request using Postman 看看它是否仍然返回相同的错误?您提到的 StackOverflow 帖子的链接也可能会有所帮助。
  • @DougStevenson 如果您使用大括号按钮并且间距有错误,那么您会在框周围看到红色轮廓、红色感叹号和文字说明。即使删除整个框中的所有文本,它也不会消失。

标签: firebase firebase-cloud-messaging


【解决方案1】:

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

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

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

如果您想使用新的 Firebase 云消息传递,新格式和参数的文档在这里:

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

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 2018-12-28
    • 2017-08-23
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多