我使用什么作为用户令牌来为用户订阅 Firebase 中的主题?

What do I use as the User Token to subscribe users to topics in Firebase?

我正在向 firebase 服务发送请求以订阅 Firebase-authenticated 用户主题:

POST https://iid.googleapis.com/iid/v1:batchAdd

body:

{
  "to": "/topics/:my-topic",
  "registration_tokens": [
        :user-token
  ]
}

headers:

Authorization: key-:app-key
Content-Type: application/json

我正在使用 JWT 通过 API 创建用户,所以我假设发送 JWT 令牌作为订阅的用户令牌会起作用,但是,我收到以下错误 200 Success 回应:

{
  "results": [{
    "error": "INVALID_ARGUMENT"
  }]
}

这样做之后,我尝试使用 registration_tokens 数组中的用户 UID,但遇到了同样的错误。

目前有没有办法让 Firebase 用户订阅主题?

不,FCM 订阅是基于应用程序实例的,而不是基于经过身份验证的用户的。当您使用 Firebase 云消息传递时,会自动为设备实例生成一个 Instance ID 令牌。那是应该用来订阅主题的令牌。

通常的流程是,在设备上生成令牌并且用户登录到您的应用后,您将这些与服务器上的值相关联,因此当您想要订阅用户时在服务器端对于一个主题,您可以查找其相应的实例 ID 令牌并使用它来订阅它们。

查看获取 IID 令牌生成回调并将其发送到应用服务器的 Android 示例 here. See similar iOS sample here