当前位置: 首页 > 面试题库 >

处理FCM设备组的刷新令牌

汪鸿波
2023-03-14
问题内容

我正在尝试通过Node.js服务器在Android应用中实现Firebase云消息传递,但遇到了用例。

我看到了Firebase教程,该教程使用注册令牌创建设备组以向登录同一用户的所有设备发送消息/通知,我不明白的是当使用onTokenRefresh()方法刷新一个注册令牌时会发生什么。

我将如何区分要更改的令牌,因为所有令牌都属于同一用户?

更新:

好的,所以现在我被困在另一个阻塞的用例上。我正在创建一个由服务器上的用户ID标识的用户组。如果用户立即卸载并重新安装了该应用程序,并且另一个用户登录到该设备,则如果我在前一个用户组上呼叫了gcm消息,则该设备仍会收到该消息。

gcm是否可以通过任何方式识别将通知发送到的设备是否已登录,如果已登录,是否使用与该组相同的用户登录?


问题答案:

所以我一直在考虑如何处理这种情况。首先,让我们在调用onRefreshToken()时放入实例:

这不会被频繁调用 ,它是密钥旋转和处理由于以下原因导致的实例ID更改所必需的:

  • 应用删除实例ID
  • 应用已在新设备上还原
  • 用户卸载/重新安装应用程序
  • 用户清除应用数据

猜到了,您可以说’onTokenRefresh()`将在上述情况发生之后并且设备在线时被调用( 当然,必须先在线才能获取新令牌
)。因此,我想这是我要进行的操作:

首先,在注册时,我将保存注册令牌并将其与另一个标识符配对,比如我的App Server中的deviceId( 因为我们处于具有多个设备的用户的场景中
)。

因此,假设我添加了3个注册令牌,这些令牌也与它们的deviceId配对。我将它们全部添加到设备组。

现在说一台设备触发onTokenRefresh(),我将立即向我的App
Server发送删除请求,以获取当前已与该deviceId配对的注册令牌(您还应该在与其连接的任何设备组中将其删除),将其替换将其与新设备​​一起添加,然后将其重新添加到相应的设备组。

那是我想到的最简单的方法。这里的密钥是让您将注册令牌与另一个标识符配对,并使用它来查找需要替换的注册令牌。



 类似资料:
  • 问题内容: 我正在使用AngularJS构建SPA,并与服务(JAVA)通信。 当用户发送其用户名/密码时,服务会同时发送回:Acces令牌和Refresh令牌。我正在尝试处理:如果收到状态为401的响应,请发送回刷新令牌,然后再次发送您的上一个请求。我试图通过包含$ http来做到这一点,但是angular不允许我在此拦截器中包含它。有什么方法可以使用我正在接收的响应参数来重新创建原始请求吗?

  • FCM专家请帮助我,我必须使用FCM为android集成通知,我正在尝试Firebase提供的演示,我尝试了许多逻辑,但它为一些设备提供了第一个令牌:我使用了三个设备,Moto E(第二代)(android版本5.1.1),Samsung GT-S7562(A.V 4.1.2)和Karbon Titanium (A.V 4.2.2),我只收到了Karbon Titanium的令牌,不知道为什么我没

  • 我正在构建一个服务器端应用程序,定期从用户的谷歌设备访问信息,并在满足某些标准时通知他们。 我有几个测试用户注册了,他们已经通过谷歌oauth2登录。应用程序已经收到了他们的auth代码,请求离线访问,并将他们的刷新令牌存储在一个单独的DB位置。然后,应用程序使用刷新令牌定期轮询他们的智能设备,以根据需要获得访问权限。 我的问题是测试用户的刷新令牌在使用几天后就过期了。我找不到谷歌关于刷新令牌寿命

  • 我第一次获取FCM并将其保存到我的用户默认值。现在当用户注销时,我如何再次刷新FCM令牌?我搜索了文档和许多其他问题,但没有找到更好的解决方案。 提前谢谢。

  • Windows现在有一个改进的库,可以在批处理脚本中使用,以处理连接到系统的设备。 这就是所谓的设备控制台 - 。 Windows驱动程序开发人员和测试人员可以使用来验证是否正确安装并配置了驱动程序,包括正确的INF文件,驱动程序堆栈,驱动程序文件和驱动程序包。 也可以在脚本中使用DevCon命令(启用,禁用,安装,启动,停止和继续)来测试驱动程序。 DevCon是一个在本地计算机和远程计算机上执

  • 刷新令牌有什么用处?按照我的理解,当访问令牌过期时使用刷新令牌,发送刷新令牌生成另一个刷新令牌和另一个访问令牌。这是因为如果访问令牌由于其持续时间短而被劫持,恶意用户实际上什么都不能做,但如果具有较长持续时间的刷新令牌被劫持,则用户将无法再受到保护。那么刷新令牌应该存储在哪里,这样才不会被人劫持呢?或者在后端应该采取哪些安全措施?