Firebase Android:在卸载应用后,通过身份验证的用户会怎样?

时间:2018-07-21 14:46:16

标签: android firebase firebase-realtime-database firebase-authentication

在我的Android应用中,我使用Firebase身份验证(电子邮件/密码)对用户进行身份验证。

该应用程序的运行方式如下:当用户登录时,我在他/她的UID下添加了一个名为logged_in的标志并将其设置为true,并在注销时更改了标记为false

结构的结尾如下:

Users
|
|----userID
     |
     |---name=.....
     |---logged_in = true

问题

现在,如果我登录到我的应用程序并在未注销的情况下卸载了该应用程序,然后重新安装了该应用程序。我注意到该用户将被自动注销,如果是这种情况,我最终将得到一个在数据库中设置为logged_in并以其true标志退出的用户。

换句话说,我从来没有机会将标志设置为false,因为用户从未从应用程序注销。

我的问题:

如何解决此问题,以便在用户自动注销时始终更新数据库(例如我的示例:用户在仍登录的情况下卸载应用程序)?

谢谢。

2 个答案:

答案 0 :(得分:0)

in onDestroy(){}(MainActiviry) 更改您的login_in == false;

更新或删除数据 https://firebase.google.com/docs/database/android/read-and-write

答案 1 :(得分:0)

我认为您可能误会了用户“登录”您的应用程序的含义。登录名是永久性的,它们不基于任何会话。 Firebase身份验证在内部管理代表其登录的令牌,令牌会定期刷新,或者在用户停止使用您的应用一段时间后刷新。

您将永远无法完全保证当用户卸载,擦除其设备或只是丢失其设备而不再返回您的应用时,您的应用可以触发其某些代码。另外请注意,您的用户可以从多个设备登录并保持登录状态。

如果您想知道用户是否已经停止使用您的应用一段时间,则必须将其记录在数据库中(可能通过更新指示他们最后一次启动应用的时间的字段),并进行查询数据库(使用您控制的后端)来确定该日期/时间何时足够老以至于您确定用户已经永久离开。