【问题标题】:Getting "InvalidTokenFormat, Error 400" from Firebase Cloud Messaging从 Firebase 云消息传递中获取“InvalidTokenFormat,错误 400”
【发布时间】:2016-07-30 21:54:26
【问题描述】:

我使用Firebase Cloud Messaging 进行我的android 开发,PHP 作为服务器端语言。现在,我可以:

  1. 使用 Firebase 控制台接收推送通知发送,无论是真实应用还是模拟器。

  2. 从终端(curl)测试时可以正常工作

然后,我尝试从apps server(使用 php curl)而不是Firebase Console 发送。现在,每次我请求 POST 请求时,都会遇到这个奇怪的消息InvalidTokenFormat, Error 400。有什么想法吗?

这里是 Firebase Api 的链接:FirebaseApi Class

如果上述用例不够清楚,请随时询问 meif 的任何输入。谢谢。

【问题讨论】:

  • 也许你在php curl 中遗漏了一些东西! (AutorizationToken) ?!
  • @IsmailRBOUH 你的意思是Authorization: key=some keys 标头?
  • 是的类似的东西,你能添加你的 curl 请求吗?
  • @IsmailRBOUH FirebaseApi Class - pastebin.com/sk72Czz8 文件中的所有内容。 init() 方法体内的 curl 代码。为了提出请求,我刚刚启动了FirebaseApi 类并调用了init() 方法
  • 确保您在 PHP 代码中使用的是 SERVER KEY,而不是 Android 密钥

标签: php android curl firebase firebase-cloud-messaging


【解决方案1】:

我的错。网址应该是(末尾不带斜线):

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

【讨论】:

    【解决方案2】:

    您需要从您的服务器向 firebase 发送请求,其中包含通知消息和用户令牌,然后 firebase 将接受请求并以通知的形式将消息广播给所有用户(我们提供的令牌) .

    Firebase 和设备适用于投票模型,因此只有 Firebase 可以在您的设备上发送通知,您可以使用设备设置投票,但谷歌不允许这样做,因为如果每个应用都开始与设备建立投票隧道, 会占用大量资源。

    【讨论】:

      【解决方案3】:

      你能发布 curl 发送到服务器的原始请求吗?通常 curl 确实为此提供了打印输出,不确定 php 版本。

      【讨论】:

        【解决方案4】:

        CURLOPT_POSTFIELDS 不需要 JSON。如果你想发送 application/x-www-form-urlencoded 请求,使用 http_build_query($message) ,或者如果你想发送 multipart/form-data 请求,直接给它 $message 数组。

        【讨论】:

        • 确实,但在 FCM 的情况下,它确实需要 application/json 标头和 json 数据,因为我选择 application/json 而不是 text
        • @NorlihazmeyGhazali 哦,那我认为你应该使用 CURLOPT_INFILE / CURLOPT_READFUNCTION ,而不是 CURLOPT_POSTFIELDS
        猜你喜欢
        • 1970-01-01
        • 2020-11-29
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-22
        • 2019-05-14
        • 2020-11-22
        相关资源
        最近更新 更多