调用DocumentSnapshot Firestore后如何正确注销Firebase身份验证?

时间:2019-07-18 04:04:42

标签: android firebase kotlin google-cloud-firestore firebase-authentication

因此,我尝试在片段Home中创建“注销”按钮,但是,每次用户注销时,该应用程序将崩溃,并且由文档快照引起。

这是我的文档快照代码。

private fun loadProfile() {
    val user = mAuth!!.currentUser
    if (user != null) {
       ...//loading profile code
        }

        val uid = user.uid
        documentReference = db!!.collection("users").document(uid)
        documentReference!!.addSnapshotListener { documentSnapshot, e ->
            //this if returning null after user signout
            if (documentSnapshot!!.exists()) {
                if (documentSnapshot.get(KEY_HP) != null) {
                   ...//loading profile code


            }else {
                val intent = Intent(this@Home.activity, LoginActivity::class.java)
                startActivity(intent)
        }
    }
    } else {
        val intent = Intent(this@Home.activity, LoginActivity::class.java)
        startActivity(intent)
    }
}

如您所见,我在所有地方都拼命添加else,但这无济于事。

这是我的注销方法

private fun signOut() {
        mAuth!!.signOut()
        val intent = Intent(this@Home.activity, LoginActivity::class.java)
        startActivity(intent)


    }

因此,我需要在不崩溃的情况下正确注销

2 个答案:

答案 0 :(得分:0)

FirebaseAuth.getInstance().signOut();

使用此按钮从Firebase注销。然后,如果您尝试对已登录用户执行任何操作,将无法执行操作,您将不得不再次登录。

答案 1 :(得分:0)

未来参考

在使用“注销”方法进行了几天的努力之后,我意识到,如果活动中附加了快照侦听器,请确保按照here的说明处理并返回错误,否则您可能会遇到一些权限错误并崩溃。

相关问题