【发布时间】:2018-10-19 19:10:25
【问题描述】:
我最近发现,即使在我的应用被卸载后,Firebase 身份验证也会将自己保存在设备上。我不知道如何删除这个旧的 Auth 信息。
我不希望用户在卸载并重新安装应用后仍处于登录状态。如果除了我自己测试我期望在同一设备上“干净安装”之外没有其他原因。
我知道捕获卸载事件没有简单的方法,因此我想在首次启动时清除所有潜在的旧 Auth 信息。
所以我添加了代码(似乎工作正常)来检查这是否是第一次启动:
Boolean firstRun = prefs.getBoolean("firstrun", true);
if (firstRun) {
// delete everything an old user could have left behind
// ==> This is where I need help <==
prefs.edit().putBoolean("firstrun", false).apply();
} else {
// move along, not the first launch
}
我尝试过(不成功):
FirebaseAuth authData = FirebaseAuth.getInstance();
authData.signOut();
这些电话似乎也是 iOS 相关问题中的建议,但我无法应用它的智慧: Firebase - Deleting and reinstalling app does not un-authenticate a user
即使在致电signOut() 之后,该应用程序仍然让我使用旧帐户登录!
我的“注销”按钮使用FirebaseAuth.getInstance().signOut(); 并且有效。 卸载后保存的这个“旧”Auth 实例有什么奇怪的(拥有?),它不会死?
特别是当我从 Android Studio 卸载然后安装/运行时:
- 一开始 authData 和 currentUser 都不为空
- 我调用上面的代码,试图摆脱这个老用户
- 3 毫秒后(在我调用它之后立即 代码)它们仍然不是 NULL。
- 再过 2 毫秒,currentUser 为 NULL(是吗?)
- 又过了 71 毫秒...仍然为空(到目前为止一切正常)
- 不到一秒钟...我以旧用户身份登录?!这怎么可能?
在身份验证下的 Firebase 控制台中,此帐户显示为 6 天前最后一次登录。所以它不会以某种方式重新登录。
有人知道如何从设备中删除 FirebaseAuth 数据吗?我不想“删除”用户帐户,只需从该设备上删除它的所有痕迹即可。
奇怪的是,我一直无意登录的帐户甚至不是在此设备上登录我的应用程序的最后一个帐户。这在过去从来都不是问题(因此我什至不知道 Firebase 在卸载后保存了身份验证)。所以看起来 Auth 信息在卸载后并未始终保存...但是一旦发生就无法删除?
非常感谢任何帮助!
【问题讨论】:
标签: android firebase firebase-authentication