我正在将我的FCM实现从Legacy API迁移到新的HTTP v1 api。
我已经使用firebase-adminsdk创建了我的服务帐户。
我还成功使用HTTP v1向设备组令牌发送推送通知,使用从服务帐户JSON生成的新JWT身份验证令牌。
我的问题是,在使用传统API管理设备组时,我遇到了401未授权错误。
从文档中可以看出,他们正在使用新的JWT令牌来授权设备组的管理,而不是旧的服务器密钥(服务器密钥也将在明年停用)。我的问题是我到底漏了什么?我应该如何使用新的服务帐户来管理设备组?
谢谢
尝试使用firebase-admin-sdk json生成JWT令牌以在设备组API中使用。返回401错误。
回复:
我的初步想法是,也许我们需要在Google Cloud凭据中进行一些更改,但是当使用“https://fcm.googleapis.com/v1/projects/myproject-id-here/messages:send”向任何一个特定的令牌ID发送消息时,并没有出现任何问题。只有在尝试使用设备组时才会出现401错误。其次,我认为现在正在删除Legacy版本,也许他们需要将“https://fcm.googleapis.com/fcm/notification” URL更新为v1呢?
我已经使用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...",
... ]
从文档中可以看出,他们正在使用新的JWT令牌来授权设备组的管理,而不是旧的服务器密钥(服务器密钥也将在明年停用)。我的问题是我到底漏了什么?我应该如何使用新的服务帐户来管理设备组?
谢谢
尝试使用firebase-admin-sdk json生成JWT令牌以在设备组API中使用。返回401错误。
Delmontee添加:
为了回答这个问题的赏金,关于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"]
}
回复:
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>
我的初步想法是,也许我们需要在Google Cloud凭据中进行一些更改,但是当使用“https://fcm.googleapis.com/v1/projects/myproject-id-here/messages:send”向任何一个特定的令牌ID发送消息时,并没有出现任何问题。只有在尝试使用设备组时才会出现401错误。其次,我认为现在正在删除Legacy版本,也许他们需要将“https://fcm.googleapis.com/fcm/notification” URL更新为v1呢?