Byr*_*ang 6 firebase-cloud-messaging
我正在将 FCM 实现从旧版 API 迁移到新的 HTTP v1 API。
我已经使用 firebase-adminsdk 创建了我的服务帐户
我还设法使用 HTTP v1 将推送通知发送到使用从服务帐户 json 生成的新 JWT 身份验证令牌的设备组令牌。
我的问题是从旧版 API 管理设备组时收到 401 未经授权的错误
https://firebase.google.com/docs/cloud-messaging/android/device-group
https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{
"operation": "create",
"notification_key_name": "appUser-Chris",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
... ]
Run Code Online (Sandbox Code Playgroud)
从文档中可以看出,他们正在使用新的 JWT 令牌来授权管理设备组,而不是旧的服务器密钥。(服务器密钥也将于明年停用)。我的问题是我在这里到底错过了什么?具体如何使用新服务帐户来管理设备组?
尝试使用 firebase-admin-sdk json 生成 JWT 令牌以在设备组 API 中使用。返回 401
有关 FCM 设备组的详细信息可以在此处找到:https ://firebase.google.com/docs/cloud-messaging/android/device-group#creating_a_device_group
以下是显示问题的示例请求和后续响应。
要求:
POST /fcm/notification HTTP/1.1
Host: fcm.googleapis.com
Content-length: 194
Project_id: XXXXREMOVEDXXXX
Content-type: application/json
Authorization: Bearer ya29.removed:removed
{
"operation": "create",
"notification_key_name": "test-group",
"registration_ids": ["devicetokenidhere1","devicetokenidhere2"]
}
Run Code Online (Sandbox Code Playgroud)
回复:
HTTP/1.1 401 Unauthorized
Content-length: 147
X-xss-protection: 1; mode=block
Content-security-policy: frame-ancestors 'self'
X-content-type-options: nosniff
Transfer-encoding: chunked
Expires: Wed, 28 Jun 2023 14:24:59 GMT
Server: GSE
-content-encoding: gzip
Cache-control: private, max-age=0
Date: Wed, 28 Jun 2023 14:24:59 GMT
X-frame-options: SAMEORIGIN
Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-type: text/html; charset=UTF-8
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
我最初的想法是,也许我们必须更改 Google Cloud 凭据中的某些内容,但是使用“https://fcm.googleapis.com/v1/projects/myproject-id”向任何一个特定令牌 ID 发布消息时都没有问题-此处/消息:发送”。401 仅在尝试使用设备组时发生。其次,我认为现在旧版本正在被删除,也许他们也需要将“https://fcm.googleapis.com/fcm/notification”URL更新为v1?
看起来文档已经更新了。现在,我们可以通过在标头中添加此内容,将 http v1 身份验证与设备组管理 api 一起使用
access_token_auth: true
参考:https://firebase.google.com/docs/cloud-messaging/android/device-group
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |