使用 Firebase 消息通过 Postman 发送推送
Posted
技术标签:
【中文标题】使用 Firebase 消息通过 Postman 发送推送【英文标题】:Sending Push via Postman using Firebase Messaging 【发布时间】:2016-12-14 12:18:30 【问题描述】:我正在尝试使用Postman 通过Firebase
云消息服务发送单个推送通知。
这是用于同一目的的有效cURL
命令,我将其用作参考。
curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":\"body\":\"Firebase\" \"priority":\"10""
到目前为止我做了什么..
1 - 适当设置标题
2- 在 Body ,我使用的是raw
"to" : "<YOUR_DEVICE_ID_TOKEN>"
,
"notification":
"body": "Firebase Cloud Message"
执行时,我会返回401 - Unauthorized
。
正确发送推送通知缺少什么?
【问题讨论】:
"multicast_id": 4790719999662534961, "success": 0, "failure": 1, "canonical_ids": 0, "results": [ "error": "InvalidRegistration" ] 这个错误 这篇文章对你有帮助:medium.com/android-school/… 这个答案可以提供帮助:***.com/a/62670409/1151916 你可以在这篇文章中找到,how to fcm send push notifications with postman via firebase messaging API 【参考方案1】:在Header处设置Authorization
键的正确方法是
key=<API_ACCESS_KEY>
不仅如此
<API_ACCESS_KEY>
愚蠢的错误,但由于这对于使用 Postman 测试 Firebase 消息传递的人可能有用,所以我将问题悬而未决。
【讨论】:
我明白了,你已经有--header "Authorization: key=<API_ACCESS_KEY>
卷曲和邮递员错误的标题。【参考方案2】:
通过 POSTMAN 发布 FCM
Body - to 是token id(应该通过instance token 生成) 在原始二进制应用程序/json中写入正文
"to": "cpa8cZPjq-w:APA91bF122f1Rnhu9v47bL
YMajaNTHAIU5SzItDwTy9o2MCIveG0PlK78VPvp3d
CqjwnUKZ4
ngi1trSyM3_aXttW62iknFfbPGtjRLhZr6wq-3qFdboz8gzdOGPz**********",
"notification":
"body": "Hello",
"title": "This is test message."
header:应该有授权:服务器密钥
内容类型:应用程序/json 在此处发布成功消息后:
【讨论】:
如何获取token?有 API 吗? 阅读 firebase android 开发者文档 我得到了 sucess=1 但在移动设备上没有收到通知 嗨 phpdroid,您需要检查完整的正文,消息正在传递到您的手机,但它无法选择正文 如何发送给所有安装了应用的用户,而不是发送到主题?【参考方案3】:打开Postman,点击Enter request URL
文本框,输入firebase url
https://fcm.googleapis.com/fcm/send
比将请求类型更改为POST
。看下面的截图:
现在点击标题并添加两个params
Content-Type
和Authorization
。
Content-Type= application/json
Authorization=AIzaSyAEb3NhsfGw1ih5mn8cmrGUAXMp86waQ //FCM SERVER KEY
见下图:
现在点击Body
而不是选择Row
并添加值作为对象,如下所示
"to":"eB5papU2Xdc:APA91bFFvc3dXru1fN5JY8U19oHIpfGhPUx7Ll7v9vJYTsIGZ15mDwB2Wpep3flLK85IUqqs2WqJwjYHSDYX28oJ1wTP0R2TDc2ba_uVjUauDcp3pCNKr_0KlghOnS",
"notification" :
"body" : "New announcement assigned",
"OrganizationId":"2",
"content_available" : true,
"priority" : "high",
"subtitle":"Elementary School",
"Title":"hello"
,
"data" :
"priority" : "high",
"sound":"app_sound.wav",
"content_available" : true,
"bodyText" : "New Announcement assigned",
"organization" :"Elementary school"
现在你的邮递员应该是这样的。点击右上角的发送按钮。
祝你好运!
【讨论】:
谢谢,但目前它在 html 中显示错误:“对于新的 FCM HTTP v1 API,通过 Postman 测试推送通知的方法发生了变化,现有解决方案仅解决了测试推送通知的旧方法:https://firebase.google.com/docs/cloud-messaging/send-message
要使用 FCM HTTP v1 API 在 Postman 上进行测试,您需要先获取一个短期 Oauth 2 令牌。您可以在此处根据 Firebase 站点上的信息生成一个:https://firebase.google.com/docs/cloud-messaging/auth-server
我使用以下代码使用 Python 生成了我的 - 请记住 pip 安装包,以便您可以成功地将包导入到代码中:
from oauth2client.service_account import ServiceAccountCredentials
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', FCM_SCOPE)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
获得令牌后,您可以在授权下将其插入您的邮递员:
重要提示:
在我的例子中,我尝试测试一个计划任务,该任务将每隔几分钟向 FCM 发送一次推送通知,因此我很难让它工作。 我已将令牌打印到日志中,然后将该令牌交给我的邮递员进行测试,但没有意识到它已在预定的 FCM 调用中使用。
在这种情况下,因为它已经被使用,令牌将不再有效,我的邮递员测试都失败了。在这种情况下,您需要为 Postman 测试生成新的令牌。
【讨论】:
我收到此响应,但没有收到 Android 应用程序的通知。有什么想法吗?【参考方案5】:看下面的截图授权密钥是如何设置的
授权:**key=**abcdefghijklmnopr2qrst253uv124wxyz_9shg
【讨论】:
【参考方案6】:发布
https://fcm.googleapis.com/fcm/send
标题
Content-Type : application/json
Authorization : key=your_server_key
身体
"to" : "your_token",
"priority": "high",
"notification":
"title": "Title",
"body" : "First Notification",
"text": "Text"
【讨论】:
这个方法允许它发送到指定的token。我们如何发送给所有用户?【参考方案7】:你检查了吗:Test FCM Notification with POSTMAN!
使用带有 POSTMAN 的 HTTP 协议发送数据消息
您必须从 Firebase 控制台 > 项目设置 > 云消息传递复制旧版服务器密钥注意:Firebase 已将我们的服务器密钥升级到新版本。你可以 继续使用您的旧服务器密钥,但建议您 升级到最新版本。
选择 POST。输入请求地址为https://fcm.googleapis.com/fcm/send
添加标头授权:key=<legacy_server_key>
或 Authorization: key=<server_key>
和 Content-Type: application/json.
现在选择 Body > raw > JSON (application/json) 并添加以下代码:
"to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
"collapse_key" : "type_a",
"notification" :
"body" : "Body of Your Notification",
"title": "Title of Your Notification"
,
"data" :
"body" : "Body of Your Notification in Data",
"title": "Title of Your Notification in Title",
"key_1" : "Value for key_1",
"key_2" : "Value for key_2"
我已经为你创建了 POSTMAN 收藏,Run in Postman directly.
希望对你有帮助。
【讨论】:
谢谢!至少,它显示了比“无效(旧)服务器密钥...”更合适的错误。 如果您使用云消息设置中的服务器密钥或旧服务器密钥(从“AAAA”或“Alza”开始),则此方法有效。 通知和数据对象有什么区别?你为什么同时使用这两个?【参考方案8】:POST https://fcm.googleapis.com/v1/projects/projectID/messages:send
标题:
Authorization:Bearer ya29.c.ElrXBjdxUzOI................o7_Y2shX2Je4tEe0
正文:
"message":
"token": "dlqj05MCnNI:APA91bGhCX6NhT.................QDpKhGheHyhhJ6T",
"android":
"notification":
"title": "New Content!",
"body": "A new video has been uploaded.",
"icon": "your_icon"
【讨论】:
您从哪里获得此 Bearer 令牌?如果我获取服务器密钥,FCM 会抛出 401 此令牌由 Firebase Admin SDK 生成。【参考方案9】:发送FCM throw Postman的步骤:
-
要发送的 URL:
https://fcm.googleapis.com/v1/projects/projectid-34543/messages:send
请求类型:POST
标题:内容类型 -> 应用程序/json &
授权 -> 承载
在正文部分输入 APS 有效载荷
正确的设备令牌。
点击发送。
更多信息在这里:https://***.com/a/62670409/1151916
【讨论】:
【参考方案10】:一定要包含 content-type : application/json header
如果您不包含内容类型标头,它会失败并出现误导性错误: 错误=缺少注册
【讨论】:
【参考方案11】:如果您想将通知发送到多个设备,您应该在正文中使用“registration_ids”而不是“to”;
"registration_ids":[
"somethingTokens7234134143",
"somethingTokens3452343185"
],
"notification" :
"body" : "New announcement assigned",
"content_available" : true,
"priority" : "high",
"subtitle":"Elementary School",
"Title":"hello"
,
"data" :
"priority" : "high",
"sound":"app_sound.wav",
"content_available" : true,
"bodyText" : "New Announcement assigned",
"organization" :"Elementary school"
【讨论】:
【参考方案12】:什么是服务器密钥?我使用(在上面的图片中)服务器密钥和旧服务器密钥,但它们都不起作用。
有人知道出了什么问题吗?对于令牌-> 我使用了从 firebase 消息中获得的 FCM 令牌,如下所示:
firestoreMessaging.getToken()
【讨论】:
我想,你有正确的标题,但可能 Firebase 项目的配置没有完成。您是否添加了 Android 或 ios 应用程序? 您还应该在您的 Android 应用程序中检查google-services.json
。您需要从 Firebase 控制台下载并粘贴到 Android 应用程序中,然后在设备上运行。
这个答案是你的问题:***.com/questions/56723045/…。以上是关于使用 Firebase 消息通过 Postman 发送推送的主要内容,如果未能解决你的问题,请参考以下文章
使用 Firebase 云消息传递,还是让应用通过 API 请求事件和触发通知?