卸载后已保存Firebase身份验证。如何删除?

Kai*_*han 5 android firebase firebase-authentication

我最近发现,即使卸载了我的应用程序,Firebase Auth也会将自身保存在设备上。我不知道如何删除此旧的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
}
Run Code Online (Sandbox Code Playgroud)

我尝试过(失败):

FirebaseAuth authData = FirebaseAuth.getInstance();  
authData.signOut();
Run Code Online (Sandbox Code Playgroud)

这些调用似乎也正是针对此iOS的相关问题的建议,但我无法运用其智慧: Firebase-删除并重新安装应用程序不会取消对用户的身份验证

即使在调用signOut()该应用程序后,仍然使用旧帐户登录我!

我的“注销”按钮使用FirebaseAuth.getInstance().signOut();并起作用。关于这个“旧的” Auth实例,在卸载后将保存的消息中,它是否会死掉,是否有些奇怪(可能是?)

特别是当我卸载然后从Android Studio安装/运行时:

  1. 首先,authData和currentUser都不为空
  2. 我调用上面的代码,试图摆脱这个老用户
  3. 3毫秒后(我立即调用该代码后),它们仍然不是NULL。
  4. 再过2毫秒,currentUser是NULL(是吗?)
  5. 再过71毫秒...仍然为空(到目前为止很好)
  6. 不到一秒钟之后...我是以旧用户身份登录的吗?这怎么可能?

在Firebase控制台的“身份验证”下,此帐户显示为6天前的最新签名。因此,无论如何都无法重新登录。

有谁知道如何从设备中删除FirebaseAuth数据?我不想“删除”用户帐户,只需从此设备中删除所有它的痕迹即可。

奇怪的是,我一直不愿意登录的帐户甚至不是在此设备上登录我的应用程序的最后一个帐户。过去这从来都不是问题(因此我什至不知道Firebase在卸载后保存了Auth)。因此,看起来好像卸载后并不总是保存Auth信息...但是发生这种情况时,无法删除吗?

任何帮助,不胜感激!

Pet*_*dad 9

添加android:allowBackup="false"到您的<application>清单中:

来自文档:

android:allowBackup

是否允许应用程序参与备份和恢复基础架构。如果此属性设置为 false,则不会执行应用程序的备份或恢复,即使是全系统备份,否则会导致所有应用程序数据通过 adb 保存。该属性的默认值为 true。