为每个用户创建Firebase主题
问题描述:
我们有一种为每个注册用户创建主题的设计方法。为每个用户创建Firebase主题
- 创建一个新用户
- 将其保存到我们的数据库与生成的令牌
- 订阅
/topics/{user-token}
当Android或 iOS设备用户登录。
因此,如果用户有多个设备,并且我们想发送用户特定的通知,我们只需将它发送到/topics/{user-token}
,以便它被所有设备接收。
我们还没有遇到过一些用户的问题,但是对于Firebase的限制还可以,这是一个好方法吗?
答
(我感动我的意见为答案)
大多数时候创建每个用户的FCM话题是不是一个好主意。
发送给FCM TOPICS的消息是公开的。任何用户(甚至是来自 不同的应用程序)都可以订阅/ topics/{用户名}并接收那些 消息。
例子:
另一名开发者可以从您的APK复制谷歌与services.json文件。
然后他可以订阅任何主题。
要拦截您的用户消息,攻击者仍需要猜测您正在使用的{用户名}或任何其他标识符。但是,如果您认为这会发生,那么问题就很大,因为您永远不知道是否有人收到您的邮件副本,而且您通常不会更改{用户名}。
这不是FCM的安全问题。这是主题API设计的一部分。
如果您需要安全消息,则可以直接将它们发送到设备令牌。
如果您还想为每个用户做一个主题,请注意不要发送敏感数据或不应被第三方拦截的数据。
+0
请解释**如果您需要安全消息,则可以直接将它们发送到设备令牌。** –
听起来不错。为什么你给uid或userId一个名字“user-token”,就像Google的传道人一样? –
如果用例适用于具有多个设备的单个用户,为什么不使用[设备组消息](https://firebase.google.com/docs/cloud-messaging/android/device-group)? –
@AL。你是对的,我错过了,但我们必须管理组列表,如果我们使用它,就像有人从Android设备注销,我发送请求到我的服务器,删除它的registration_id等,但如果我使用'主题',我只是在客户端取消订阅。如果Firebase没问题,我会选择主题。但谢谢你的建议。 – ocanal