当前位置: 首页 > 知识库问答 >
问题:

卸载并再次安装应用程序时,Firebase身份验证返回特定用户

汤洋
2023-03-14

我有一个问题,我使用谷歌登录我的应用程序Firebase。

假设有三个用户X、Y和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用户。

我甚至尝试注销并删除应用程序。同样,如果我安装,它返回< code>Y用户,甚至没有要求登录。

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

这个问题只是取消了应用程序的安装。

一定是什么原因?

共有1个答案

曾晨
2023-03-14

从文档中:

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

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

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

FirebaseAuth.getInstance().signOut();

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

这个问题也与ios有关(但想法相同):Firebase-删除和重新安装应用程序不会取消用户身份验证

其他一些替代品也:

在您的中添加android:allowBackup=“false”

android:allowBackup

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

做如下测试:

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

注销时,拥有火库自动登录().signOut(); 非常重要。

 类似资料:
  • 问题内容: 我在使用Google登录我的应用程序+ Firebase时遇到问题。 假设有3个用户在同一时间登录我的应用程序。 我用于检查用户的代码是否已登录: 场景:我用多个帐户签名并注销。一切正常。 但是,当我删除该应用程序并再次安装时。该用户被自动恢复。 我尝试使用登录并卸载应用程序。不过,如果我再次安装它,则直接将我带给用户。 我尝试使用登录并卸载应用程序。不过,如果我再次安装它,则直接将我

  • 我有一个Keycloak Cordova本地应用程序,一旦启动,就会正确显示Keycloak的用户名/密码表单,但在成功验证后,当试图重定向到该应用程序时,会显示err_connection_rejection。重定向当前设置为“http://localhost”。 我使用了这个例子https://github.com/keycloak/keycloak/tree/master/examples/

  • 在我的应用程序中,用户注册和认证使用Firebase。应用程序中的所有活动只对经过身份验证的用户开放。但在应用程序内部,有一个活动(ActivityB)是基于用户的数据。此活动再次限制了电子邮件和密码登录(以便没有安装该应用程序的人可以从其他用户检查此活动)。 即使User1/User2从ActivityB签名,user也是从整个firebase身份验证签名。 我所给的只是指示命令。但不管用

  • 我的应用/构建。格雷德尔: 在调试模式下,我成功地完成了auth。由Firebase授权。 输入电话号码 好的。工作正常。 但当我想在发布模式下执行此操作时,我会遇到下一个错误:

  • 问题内容: 使用以下代码对用户进行身份验证之后(以下是我的代码的精简版本,因此仅显示成功的登录逻辑)… (即启动和运行应用程序,成功登录)。 如果您随后删除该应用程序并将其重新安装在同一设备上,则此调用(我正在应用程序委托中使用该调用来确定用户是否已登录)将始终返回他们已登录。 这是为什么?我本以为删除该应用程序并重新安装它会擦除所有数据。 如果您在iOS模拟器中重置“内容和设置”,然后安装该应用

  • 在我的Angular 2应用程序中,我希望允许用户通过电子邮件/密码、谷歌和Facebook提供商进行连接。 在第一次登录时,我了解到一个用户条目是在firebase数据库中创建的。例如。如果用户使用另一个提供程序登录,我理解firebase将阻止此操作,特别是如果电子邮件已经被使用并且在规则中设置为unique。 所以我的问题是:如果我们检测到电子邮件是相同的,那么我们如何能够自动的,对用户来说