You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android FirebaseAuth调用signOut()后登出失效跳转异常问题

问题原因

登录状态判断逻辑错误是核心诱因:

  • FirebaseAuth.getInstance() 返回的是Firebase认证模块的全局单例对象,无论当前是否有用户登录,这个方法都不会返回null
  • 现有LoginActivity里的判断条件auth != null永远成立,因此无论是否执行登出操作,进入LoginActivity都会直接触发跳转PostActivity的逻辑,表现为登出功能失效。
修改方案

需要调整两处代码:

  1. 修正登录状态校验逻辑
    不要判断FirebaseAuth实例本身是否为空,真正代表当前登录用户的是实例的currentUser属性,未登录状态下该属性会返回null。将LoginActivity中的校验代码替换为:
val auth = FirebaseAuth.getInstance()
// 校验当前登录用户是否存在
if(auth.currentUser != null){
    goPostsActivity()
}
  1. 优化登出跳转逻辑,清理Activity栈
    现有登出跳转逻辑没有清空任务栈,用户按返回键会直接回到登录后才允许访问的页面,容易触发权限错误或空指针。将ProfileActivity中的登出代码调整为:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if(item.itemId == R.id.menu_logout){
        Log.i(TAG,"user wants to logout")
        FirebaseAuth.getInstance().signOut()
        val intent = Intent(this, LoginActivity::class.java).apply {
            flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
        }
        startActivity(intent)
        finish()
    }
    return super.onOptionsItemSelected(item)
}

修改完成后,执行signOut()方法会将currentUser置为null,进入LoginActivity时不会再自动跳转PostActivity,可正常输入其他账号完成登录。

内容的提问来源于stack exchange,提问作者ubfl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:54:48