即使 Firebase 控制台中有用户,Firebase 身份验证也会为 getCurrentUser() 返回 NULL

时间:2021-06-03 08:32:52

标签: android firebase android-fragments

当注册片段中的用户输入 usernameemailpassword 时,他会被转发到我向他发送电子邮件验证的验证片段,他会一直停留在该屏幕上,直到他点击电子邮件中的链接,然后将他转发到个人资料片段。

当用户在验证片段上时,他可以在单击我发送的电子邮件中的链接之前返回到注册片段。在这种情况下,我从 onStart() 调用一个函数从 Firebase 中删除他的数据:

private fun deleteUnverifiedAccount() {
        val firebaseAuthentication = FirebaseAuth.getInstance()
        if (firebaseAuthentication.currentUser == null) {
            shortToast("empty")
        }
        if (firebaseAuthentication.currentUser != null) {
            if (!firebaseAuthentication.currentUser.isEmailVerified) {
                val user = firebaseAuthentication.currentUser
                user.delete()
                    .addOnCompleteListener {
                        shortToast("deleted")
                    }
            }
        }
    }

问题来了:

  1. 此函数已成功从 Firebase 身份验证中删除用户
  2. 但是当用户第二次尝试注册时,他的数据会再次保存到 Firebase 身份验证中。
  3. 如果此时他没有验证电子邮件就再次返回到注册片段,那么他的数据不会从 Firebase 身份验证中删除。
  4. deleteUnverifiedAccount() 函数被调用时,它说 currentUser == null 即使他在 Firebase 身份验证中显然不是空的。

1 个答案:

答案 0 :(得分:0)

首先我没有尝试从 firebase 中删除任何用户,但我刚刚搜索了一些东西,我发现这个链接 https://www.javatpoint.com/firebase-realtime-database-update-and-delete 这个链接会帮助你,因为我认为你的代码有问题,你试图删除你的用户,但没有用户的数据。 你的语法是这样的

myFirebase.child(current user's id).remove value 

你能在 user.delete() 之前试试这个吗,我希望它有效

相关问题