对 FCM 执行 POST 请求时服务器密钥无效?

Posted

技术标签:

【中文标题】对 FCM 执行 POST 请求时服务器密钥无效?【英文标题】:Invalid server-key when performing a POST request to FCM? 【发布时间】:2020-01-29 17:25:55 【问题描述】:

我正在关注 this tutorial 的推送通知,但我被困在它所说的部分

要触发推送消息,请向该 URL 发出 POST 请求。

我使用this site 生成了公钥和私钥,并在调用applicationServerKey 之前将公钥放在了registration.pushManager.subscribe 中,我得到了格式正确的 JSON 响应,但我不确定如何生成Authorization 标头用于在 POST 请求中发送通知。以下是来自subscribe 的 JSON 响应的样子:


  "endpoint":"https://fcm.googleapis.com/fcm/send/asdf:qwer",
  "expirationTime":null,
  "keys":"p256dh":"key","auth":"auth"

我推测/send 之后的部分应该放在to 字段中,但我不确定如何格式化Authorization 标头。当然,我应该需要以某种方式使用私钥,但我不确定如何使用。

我的假设是我需要对我的私钥、p256dh 字段和auth 字段执行某种操作,结果将放在 POST 请求中的key= 字段中,但我找不到这方面的参考。

需要创建一个 Firebase 项目来执行此操作吗?我不确定是否是这种情况。

【问题讨论】:

【参考方案1】:

是的,对 Firebase 产品和服务的所有访问都需要创建 Firebase 项目。您不能使用任意键来调用 FCM。您必须使用已获得调用 API 权限的服务帐号。

【讨论】:

那么谷歌教程中提到的this site有什么意义呢?如果不能使用密钥,为什么要生成密钥? 我不知道。尝试遵循 FCM 文档。 这就是我在做什么? Firebase 不是属于 Google 的吗? That step 在他们的设置推送通知的教程中被正式提及。 “您可以通过访问...来创建一组公共和私有应用程序服务器密钥” 另外,是不是 VAPID 背后的整个想法是您不需要创建 Firebase 项目?所以你应该能够使用生成的私钥/公钥? 正式的 FCM 文档可以在这里找到:firebase.google.com/docs/cloud-messaging

以上是关于对 FCM 执行 POST 请求时服务器密钥无效?的主要内容,如果未能解决你的问题,请参考以下文章

向 FCM API 发送请求时收到无效的 JSON 有效负载

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

react native fcm在android上有效,但在ios上无效

向 FCM 服务器发送 JSON 请求不起作用

FCM(Firebase云消息)中的服务器密钥和旧服务器密钥有啥区别

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