当前位置: 首页 > 面试题库 >

在卸载并重新安装应用程序后,Firebase身份验证会返回特定用户

印劲
2023-03-14
问题内容

我在使用Google登录我的应用程序+ 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用户,甚至不要求登录。

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

问题只是释放了应用程序。

一定是什么原因?


问题答案:

从文档:

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

当用户注销时,Auth实例将停止保留对User对象的引用,并且不再保持其状态。目前没有用户。但是,用户实例仍然可以完全起作用:如果您保留对它的引用,则仍然可以访问和更新用户数据。

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

FirebaseAuth.getInstance().signOut();

此处提供更多信息:https :
//firebase.google.com/docs/auth/users

其他替代方案还包括:

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

android:allowBackup

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

做为html" target="_blank">测试:

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

FirebaseAuth.getInstance().signOut();注销时拥有它很重要。



 类似资料:
  • 我有一个问题,我使用谷歌登录我的应用程序Firebase。 假设有三个用户,我在一次登录我的应用程序。 我用于检查用户的代码是否已登录: 场景:我用多个账号登录,注销。一切正常。 但是当我删除应用程序并再次安装它时。用户被自动返回。 我尝试使用登录并卸载该应用程序。不过,如果我再次安装它,它直接将我带到用户。 我尝试使用登录并卸载该应用程序。不过,如果我再次安装它,它直接将我带到用户。 我甚至尝试

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

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

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

  • 我目前正在使用FirebaseAuth和web小部件库firebaseui web开发基于VueJS的登录流原型。 成功认证后(无论是< code>password还是< code>google provider ),小部件加载栏会不断重复,firebaseui-web不会触发其< code > signinseccesswithauthresult 回调。但是对< code > identity

  • 我有一个小应用程序,我一直在工作。我想要一个新的安装运行从我的Galaxy Nexus根运行4.2.1。我卸载了应用程序,然后尝试通过Eclipse重新安装它。它安装良好,没有错误在logcat,控制台等...但当你点击运行应用程序时,它刚打开就关闭了。我已经在两个不同的手机上试过了,一样的东西。 活动仅在清单中声明一次... 尝试更改版本号...无效果 向MainActivity添加了一些log