Abu*_*lim 5 java android firebase firebase-authentication
我有一个问题,我在我的应用程序中使用 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
}
Run Code Online (Sandbox Code Playgroud)
场景:我用多个帐户签名并注销。一切正常。
但是当我删除该应用程序并再次安装它时。用户Y
自动返回mAuth.getCurrentUser()
。
我尝试登录X
并卸载该应用程序。不过,如果我再次安装它,它会直接带我到Y
用户。
我尝试登录Z
并卸载该应用程序。不过,如果我再次安装它,它会直接带我到Y
用户。
我什至尝试注销并删除该应用程序。再次,如果我安装,它会返回Y
用户,甚至不要求登录。
注意:我还没有清除缓存或数据。如果我这样做,一切都会很好。
问题只是卸载应用程序。
一定是什么原因?
来自文档:
当用户注册或登录时,该用户将成为 Auth 实例的当前用户。Firebase Auth 实例会保留用户的状态,以便刷新页面(在浏览器中)或重新启动应用程序不会丢失用户的信息。
当用户退出时,Auth 实例停止保留对 User 对象的引用,并且不再保留其状态;当前没有用户。但是,用户实例仍然具有完整的功能:如果您保留对它的引用,您仍然可以访问和更新用户的数据。
因此,要解决这个问题,最好的方法是创建一个按钮并注销用户。这样,当您重新启动应用程序时,该用户将不会登录。
FirebaseAuth.getInstance().signOut();
Run Code Online (Sandbox Code Playgroud)
更多信息在这里: https: //firebase.google.com/docs/auth/users
此问题也与 ios 相关(但想法相同):Firebase - Deleting and reinstalling app does not un-authenticate a user
其他一些替代方案还有:
添加android:allowBackup="false"
到你的<application>
清单中。
android:允许备份
是否允许应用程序参与备份和恢复基础架构。如果此属性设置为 false,则不会执行应用程序的备份或恢复,即使是全系统备份,否则会导致所有应用程序数据通过 adb 保存。该属性的默认值为 true。
将此作为测试:
FirebaseAuth.getInstance().signOut();
注销时很重要。
归档时间: |
|
查看次数: |
3181 次 |
最近记录: |