带有 Postman 的 FCM - 请求缺少身份验证密钥(FCM 令牌)

Posted

技术标签:

【中文标题】带有 Postman 的 FCM - 请求缺少身份验证密钥(FCM 令牌)【英文标题】:FCM with Postman - The request was missing an Authentication Key (FCM Token) 【发布时间】:2017-12-31 18:09:05 【问题描述】:

//正文是这样的


    "to":
    "/topics/NEWS"
    ,
    "data":
        "extra_information": "This is some extra information"
    ,

//我需要给的通知

"notification":
            "title": "ChitChat Group",
            "text": "You may have new messages",
            "click_action":"ChatActivity"
        
    

【问题讨论】:

这个答案可以提供帮助:***.com/a/62670409/1151916 【参考方案1】:

401 错误与您的授权密钥无效或不正确有关。

使用 Postman 时,为 Authorization 的值添加 key= 前缀,如下所示:

key=AAA...

有关使用 Postman 发送下游 FCM 消息的教程,请参见下文。

另外,对于您的 notification 消息负载,text 不是有效参数之一,我认为您正在寻找 message



使用 Postman 发送下游消息

要在Postman 中执行此操作,您只需设置以下内容:

    将请求类型设置为POSTHeaders 中,设置以下内容: 内容类型 = 应用程序/json 授权 = (请参阅您的 Firebase Console's Cloud Messaging Tab) 在Body中设置payload参数(*在本例中,我们使用了raw选项,见截图(2)*) 发送请求到https://fcm.googleapis.com/fcm/send

截图:

(1)

注意:始终对您的服务器密钥保密。我的钥匙只有一部分在这里可见,所以应该没问题。

(2)

(3)

请注意,请求成功,响应中包含 message_id

【讨论】:

谢谢@AL。你拯救了我的大量阅读!可惜Postman 不是Firebase 的文档中的资源...我在windows 下工作并且没有内置cURL @webprogrammer 不客气。 :) 实际上,我所做的说明曾经在 *** 文档中,但该服务在几个月前关闭。我想有很多可用的选项,Firebase 不希望看起来他们对服务有偏见。干杯! 从 firebase 控制台发送通知后,如果应用程序不在前台,它将不会在 MyFirebaseMessagingService.java 类的 onMessageReceived 方法中接收。点击该通知,它将带我们进入启动器活动。从那里我们必须使用改造调用这个https://fcm.googleapis.com/fcm/send url,传递我们在启动器活动中收到的数据。之后,响应将命中MyFirebaseMessagingService.java 类的onMessageReceived 方法。正确吗?@AL。 @AL。获取 message_id 但未在 fcm 通知历史记录中创建,也未收到通知 嗨!我也没有收到消息,但发现在屏幕截图 2 上更改了正文消息,推送到达了手机 "to" : "<my token>", "data" : "body":"Message...", "title":"title..", "score":"880", "time":"02:45" 【参考方案2】:

错误:

授权:A​​IzaSyDDk77PRpvfhh......

正确:

授权:key=AIzaSyDDk77PRpvfhh......

完整示例:

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

 "data": 
    "score": "5x1",
    "time": "15:10"
  ,
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."

【讨论】:

是的!我的时间完全被 Google 垃圾文档 firebase.google.com/docs/cloud-messaging/concept-options 浪费了,错误的“token”而不是正确的“to”...【参考方案3】:

虽然上述答案仍然正确,但您可以选择使用 HTTP v1。这需要 Bearer 而不是 key= 并使用 Oauth2 访问令牌而不是服务器密钥字符串。如需查看 HTTP v1 规范,请参考以下链接:

https://firebase.google.com/docs/cloud-messaging/migrate-v1

【讨论】:

谷歌文档是垃圾。现在已经通过它们好几天了,代码在两个 api 之间混淆了【参考方案4】:

我在 php 中也遇到了同样的错误,用下面的标题解决了:

$header = array("authorization: key=" .  $this->apiKey . "","content-type: application/json");

【讨论】:

以上是关于带有 Postman 的 FCM - 请求缺少身份验证密钥(FCM 令牌)的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过 POSTMAN 向特定应用程序包名称发送 FCM 推送通知?

如何使用 Postman/curl 和 Angular 8 测试 FCM

firebase 函数缺少 oauth2 凭据

FCM 推送 - 请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据

FCm 错误 = 在 reactjs 中的推送通知上缺少注册?

POST 请求的身份验证错误:“未提供身份验证凭据”使用 Axios,但使用 POSTMAN 工作