卸载后保存Firebase Auth。如何删除它?

时间:2018-05-09 15:39:14

标签: 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
}

我尝试过(失败了):

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卸载然后安装/运行时:

  1. 首先authData和currentUser都不为空
  2. 我调用上面的代码,试图摆脱这个老用户
  3. 3毫秒之后(我打电话之后立即 代码)它们仍然不是NULL。
  4. 另外2毫秒,currentUser IS NULL(是吗?)
  5. 另外71毫秒......仍为空(到目前为止一直很好)
  6. 不到一秒钟......我作为老用户签了名?!这怎么可能?
  7. 在身份验证下的Firebase控制台中,此帐户显示为6天前的最后一次签名。所以它不会以某种方式重新登录。

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

    奇怪的是,我不断登录的帐户甚至不是在此设备上登录我的应用程序的最后一个帐户。这在过去从来都不是问题(因此我甚至不知道Firebase在卸载后保存了Auth)。所以看起来Auth信息在卸载后不会始终保存...但是当它发生时它是不可能删除的?

    任何帮助非常感谢!

3 个答案:

答案 0 :(得分:0)

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

来自文档:

  

android:allowBackup

     

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

答案 1 :(得分:0)

也尝试FirebaseAuth.getInstance()。getCurrentUser()。delete

答案 2 :(得分:0)

Firebase 将身份验证信息存储在共享首选项中,文件名以“com.google.firebase.auth.api.”开头。因此,如果您在注销流程中删除这些文件,将有助于达到目的。

         onClick={() => {
           navigator.clipboard.writeText(link);
           alert(`${name} Link Copied to Clipboard`);
         }}
       >
         Copy Link!
       </button>```