我正在尝试从旧版 FCM 消息转换为 V1 API。我使用的是 Elixir,因此使用 Pigeon OSS (v2) 来提供 FCM 接口,并对其进行一些改进以使用 Goth OSS 来处理 OAUTH 组件。
我按照我想要的内容设置了消息传递,并且正在向 Google 发送消息,但我收到了 403 响应,错误代码中包含 SENDER_ID_MISMATCH,状态中包含 PERMISSION_DENIED。
我正在使用使用 firebase 管理员角色创建的服务帐户文件,并且我也尝试了其他几个。在看到有关应用程序和服务帐户之间不匹配的帖子后,我检查并发现该应用程序使用了不正确的 google-services.json 文件,我什至找不到该文件的记录。有趣的是,更改文件并不影响应用程序针对旧版本软件的操作,因此显然它并未真正使用。然而,我认为将应用程序更改为与服务帐户匹配的内容并没有帮助。我还让我的测试用户(知道如何构建 Android 应用程序)退出更新后的应用程序并重新登录,以确保他获得了一个新令牌,该令牌可能是使用更新后的 app/google-services.json 创建的。还是不行。
旧的服务文件显示了一个 oauth_client,带有 id 和类型。新的就没有这个了我们需要它吗?我想是的,为了让 Goth 配置发挥作用。我们试图弄清楚如何创建它,似乎有很多工作要做,因为显然我们的应用程序 (2) 不在一个组织中,并且要在那里创建一个似乎需要帐户所有者(我们的首席执行官)来创建云身份并做了很多其他我什至无法向他解释的事情。这实际上有必要吗?旧的服务文件具有 oauth_client ID,我认为它不在组织中。
如果您有任何好的想法,我希望提供详细的步骤。如果需要,我可以创建一个新的服务帐户,但是我需要向其中添加哪些角色或其他详细信息,以及我需要做什么来确保它与 google-services 文件一致?
当宣布弃用旧版 FCM API 时,Google 的联系人并没有意识到该警告的重要性。 6 月 17 日,我试图做一些完全不相关的事情,这需要访问我们的 Google Cloud 帐户,我停下来阅读电子邮件,包括一封警告我们还剩三天的邮件。那么猜猜是谁被困在修复它了???
我感谢您提供的任何详细帮助。谷歌的文档没有我需要的那么有帮助。
HTTP v1 于 2017 年推出。在支持这两个 API 多年后,Firebase 于 2023 年 6 月宣布,旧版 API 将在一年后删除。
使用已弃用的 HTTP 和 XMPP FCM 旧版 API 的应用程序应尽早迁移到 HTTP v1 API。使用这些 API 发送消息(包括上游消息)已于 2023 年 6 月 20 日弃用,并于 2024 年 7 月 22 日开始关闭。
发送推送的旧流程现在无法工作,您需要彻底更改它。他们删除了授权密钥,端点 url 也发生了更改。
(403) PERMISSION_DENIED 表示您已通过身份验证(您的令牌有效),但您无权访问 URL 中的资源。
注意:使用 FCM XMPP 和 HTTP 旧版 API 发送消息(包括上游消息)已于 2023 年 6 月 20 日弃用,并将于 2024 年 6 月删除。如果您使用旧版 FCM 发送 API,我们强烈建议您迁移HTTP v1 API 或考虑使用 Admin SDK 构建发送请求。
https://firebase.google.com/docs/cloud-messaging/server#choosing-a-server-option
https://firebase.google.com/docs/cloud-messaging/auth-server#node.js_2
他们几乎涵盖了您可能遇到的所有类型的问题。