当用户登录另一部电话时如何注销他们的电话-Kotlin Firebase

时间:2019-12-08 18:25:46

标签: android firebase kotlin firebase-authentication

我正在开发健身应用程序,基本上,我想在用户登录另一台设备时将其退出应用程序,以防止数据被破坏。 (我将所有信息保存在.txt文件中,直到他们点击“保存”,然后它将上传到Cloud Firestore。)

在被激活后,我将其称为注销用户: this.mAuth?.signOut()

但是,我想不出一种快速完成此操作的方法。我应该只使用实时数据库侦听器吗?用户登录后,将随机字符串下载到他们的设备,然后下载到数据库。让侦听器查看它们是否匹配,如果不注销,则将它们注销(因为重新登录会重置随机字符串)。这项工作还是有更好,更有效的方法呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

您将很难过,因为您使用Firebase Auth登录状态尝试对数据进行控制。这里将出现重大问题,其中最重要的一点是不能保证用户实际上会退出他们先前登录过的其中一个设备。如果设备丢失了怎么办?如果该应用已卸载怎么办?您将无法检测到这些情况,并且数据库将永远显示用户仍在登录。

最好让用户自己决定是要继续在其他设备上离开的地方,还是只是放弃之前所做的任何事情。用户应该具有控制权。

如果您需要检测他们正在使用哪个设备,则生成一个随机字符串(UUID)并将其存储在本地就足够了。但是,您应该知道,如果用户只是选择删除本地存储或卸载应用程序,则可以删除它们。因此,您应该为UUID突然变得不活动而不作通知做好准备。

从您的问题中尚不清楚这里的实际要求是什么,但是我强烈建议使用auth登录状态不是一个好方法。

答案 1 :(得分:0)

您可以通过执行以下操作来阻止用户登录另一个应用程序:

添加一个字段loggedIn : false,如果用户登录,则将该字段更新为等于true

如果同一用户单击另一台设备上的登录按钮,则检查loggedIn的值。如果loggedIn等于true,则显示警报(例如:您已经有活动的会话),以防止用户登录。