对 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(Firebase云消息)中的服务器密钥和旧服务器密钥有啥区别
FCM 推送 - 请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据