带有 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 中执行此操作,您只需设置以下内容:
-
将请求类型设置为
POST
在 Headers 中,设置以下内容:
内容类型 = 应用程序/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】:
错误:
授权:AIzaSyDDk77PRpvfhh......
正确:
授权: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
FCM 推送 - 请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据