如何使用 OAuth 访问令牌向 Firebase 的 https://iid.googleapis.com/iid/v1:batchImport 进行身份验证?



是否有人知道如何向Firebase实例ID服务的batchImportAPI进行身份验证(https://developers.google.com/instance-id/reference/server)使用Google应用程序凭据?

或者与凭据关联的服务帐户需要哪个IAM角色?

我当前使用的服务帐户具有Firebase Admin SDK Administrator Service Agent角色,可以向batchAddAPI进行身份验证,例如:

POST /iid/v1:batchAdd HTTP/1.1
Host: iid.googleapis.com
Authorization: Bearer {MY ACCESS TOKEN OF THE SERVICE ACCOUNT}
Content-Type: application/json
access_token_auth: true
Connection: close
{"to":"/topics/MY_FCM_TOPIC","registration_tokens":["MY_FCM_INSTANCE_TOKEN"]}

它响应200 OK:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Connection: close
{"results":[{}]}

但是,如果我更改为使用具有相同访问令牌的batchImportAPI:

POST /iid/v1:batchImport HTTP/1.1
Host: iid.googleapis.com
Authorization: Bearer {MY ACCESS TOKEN OF THE SERVICE ACCOUNT}
Content-Type: application/json
access_token_auth: true
Connection: close
{"application":"MY iOS APP BUNDLE ID","sandbox":false,"apns_tokens":["MY_APNS_TOKEN"]}

它将响应401未授权:

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=UTF-8
Connection: close
{"error":"Not authenticated or unauthorized"}

batchImportAPI是否不支持使用OAuth访问令牌进行身份验证?

或者我的服务帐户缺少某些权限?

您必须使用您的firebaseapi密钥。你可以在"设置->云消息"下的firebase中找到它

应该有一个API密钥visbile和一个遗留的API密钥。

标题:Authorization: key=<KEY>

要使用OAuth2访问令牌而不是FCM服务器密钥对iid.googleapis.com进行身份验证,似乎还需要发送以下标头:

access_token_auth: true

实例ID服务器参考文档没有提到这一点。我不得不深入研究firebase管理节点的源代码,它还向IID服务发出请求。

/iid/info端点的OAuth2请求也需要此标头:

https://iid.googleapis.com/iid/info/token

相关内容

  • 没有找到相关文章

最新更新