【问题标题】:Firebase Authentication returning specific user when app is uninstalled and Installed again卸载并再次安装应用程序时,Firebase 身份验证返回特定用户
【发布时间】:2018-07-17 12:52:18
【问题描述】:

我的应用程序使用谷歌登录 + Firebase 时遇到问题。

假设有 3 个用户 X,Y and Z 我在一个实例中登录我的应用程序。

我用于检查用户是否登录的代码:

FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();

if(currentUser!=null)
   {
     //user logged in and get user detail from currentUser and go to HomePage
   }
 else{
    //Show sign in button
   }

场景: 我用多个帐户签名并注销。一切正常。

但是当我删除应用程序并重新安装它时。 Y 用户由mAuth.getCurrentUser() 自动返回。

我尝试使用X 登录并卸载应用程序。 不过,如果我再次安装它,它会直接将我带到Y 用户。

我尝试使用Z 登录并卸载应用程序。 不过,如果我再次安装它,它会直接将我带到Y 用户。

我什至尝试注销并删除应用程序。如果我再次安装,它会返回 Y 用户,甚至不需要登录。

注意:我还没有清除缓存或数据。如果我这样做,一切都会正常。

问题只是卸载应用程序。

一定是什么原因?

【问题讨论】:

  • 尝试使用 X 登录并卸载应用程序您可以使用 X 登录还是 Y 已登录?
  • Y 又回来了。无论如何,如果我卸载应用程序并安装它会返回 Y,我真的很困惑
  • 应用标签中的android:allowBackup="false" 怎么样
  • 你能解释一下它是什么吗?但我也知道为什么只有Y 回来了
  • Firebase 会在卸载后保留一些数据,卸载后删除数据使用这些 android:allowBackup="false" android:fullBackupContent="false" 。而且我不确定为什么只有 Y,但您可以尝试使用它,然后在不使用这些标签的情况下使用 X 或 Z 签名来再次测试

标签: java android firebase firebase-authentication


【解决方案1】:

来自文档:

当用户注册或登录时,该用户将成为 Auth 实例的当前用户。 Firebase Auth 实例保留用户的状态,因此刷新页面(在浏览器中)或重新启动应用程序不会丢失用户的信息。

当用户退出时,Auth 实例停止保持对 User 对象的引用并且不再保持其状态;当前没有用户。但是,用户实例继续完全正常工作:如果您保留对它的引用,您仍然可以访问和更新用户的数据。

所以要解决这个问题,最好的方法是创建一个按钮并注销用户。这样,当您重新启动应用程序时,该用户将不会登录。

FirebaseAuth.getInstance().signOut();

更多信息在这里:https://firebase.google.com/docs/auth/users

还有这个与 ios 相关的问题(但想法相同):Firebase - Deleting and reinstalling app does not un-authenticate a user

还有一些其他的选择:

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

android:allowBackup

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

将此作为测试:

  1. 删除缓存和数据
  2. 使用用户 Y 登录并注销
  3. 使用用户 X 登录并注销
  4. 卸载应用程序
  5. 使用用户 X 安装应用程序登录。

退出时输入FirebaseAuth.getInstance().signOut(); 很重要。

【讨论】:

  • 为什么只有 Y 看来你从一开始就使用用户 Y 登录
  • 但问题是如果我使用 X 登录并删除应用程序,它应该在安装后返回 X
  • 我正在注销注销,但我的问题是删除应用程序。即使我注销并删除应用程序并重新安装它。它仍然返回 Y
  • 在关于ios的链接中,它说即使你删除了应用程序,数据也会保留在那里
  • @ABDevelopers 是您在该应用程序中登录的第一个用户
猜你喜欢
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 2019-12-31
  • 2019-11-22
  • 2020-10-26
  • 2021-08-23
相关资源
最近更新 更多