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

Posted

技术标签:

【中文标题】如何使用 Postman/curl 和 Angular 8 测试 FCM【英文标题】:How to test FCM using Postman/curl with Angular 8 【发布时间】:2019-10-23 22:46:24 【问题描述】:

我正在尝试使用 web-push 为我的 Web 应用程序(Angular 8)设置通知。

我已经使用 Angular Service Worker 成功注册了用户 端点、p256dh 和身份验证。它已经在数据库中了。

我的后端是 Laravel,但是,在设置完所有内容后它不起作用。 因此,我正在尝试使用邮递员设置一个“原始”请求,以在对后端进行故障排除之前测试通知本身是否正常工作。

(我为前端遵循的教程:https://blog.angular-university.io/angular-push-notifications/)

这是邮递员上的json:


   "to": "<HERE GOES THE USERS p256dh>",
   "notification": 
    "body": "Hello",
    "title": "This is test message."
   


网址:~~POST ~~

带有以下标题:

Authorization: key=4uAH6X9MLTQWYWuDuUjBDk5P8OHPmFLWF9FZJeDAZMo (I've tried users auth code and also my VAPID_PRIVATE_KEY
Content-Type: application/Json

我得到了以下回复:

sender is not authenticated.

编辑:尝试过:https://fcm.googleapis.com/fcm/send 并得到:

Invalid (legacy) Server-key delivered or Sender is not authorized to perform request.

我做错了什么?即使浏览器关闭,预期的结果也会是通知。

(我正在测试 o locahost 并通过 angular-http-server 提供服务,使用 ng build --prod 构建)

【问题讨论】:

***.com/a/64286535/5959404 如果你想直接从角度发送它 【参考方案1】:

正如 fcm 响应所示,您似乎正在使用旧服务器密钥进行身份验证。旧服务器密钥比新服务器密钥短得多。

要解决此问题,如果您已有服务器密钥,请使用服务器密钥,或单击添加服务器密钥创建一个并使用此密钥代替授权标头中的旧服务器密钥。

请参阅此image 以供参考。

【讨论】:

谢谢。我已经使用 npm 的 web-push 解决了“测试”,传递了令牌和密钥以及有效负载。似乎我的后端没有正常工作,但这是下一个问题的问题。 太棒了! :) 是什么导致了这个问题?是服务器密钥吗? 这是 Angular 的服务工作期望有效负载的方式。它期望一个带有“通知”键的字符串化 json。【参考方案2】:

我已经使用 npms send-notification 进行了测试:

  web-push send-notification --endpoint=<url> [--key=<browser key>] [--auth=<auth secret>] [--payload=<message>] [--ttl=<seconds>] [--vapid-subject=<vapid subject>] [--vapid-pubkey=<public key url base64>] [--vapid-pvtkey=<private key url base64>] 

现在是后端的问题,我会尝试解决。

【讨论】:

以上是关于如何使用 Postman/curl 和 Angular 8 测试 FCM的主要内容,如果未能解决你的问题,请参考以下文章

Go 测试失败 db 查询(零指针)但适用于 Postman/Curl

.Net Core小技巧 - 使用Swagger上传文件

如何重用 Angular 测试文件中的所有导入

我们如何使用 Angular 按 TimeStamp 数据类型对 Firebase Firestore 数据进行排序?

如何使用 Mongoose 在 mongodb 中存储动态对象数组?

如何在 AngularJS 中收听 jQuery 事件