Firebase - 删除后用户仍然存在

Firebase - User still exist after delete

当我通过单击旁边的垃圾桶从实时数据库中删除用户时,用户消失了,没关系,但我仍然可以通过他的电子邮件和密码登录,登录成功后,UUID当我将一些值写入数据库中的子表时,该用户的 再次出现,但在注册时没有定义他的值。

我以为1小时后应该没问题,我还可以把他注册为新用户,但我不能。我前两天删了他。怎么了,我如何才能永久删除用户 - 而不是通过阻止他?

我的部分主要代码:


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //textview,buttons,progress bars, etc...
        mAuth = FirebaseAuth.getInstance();

        forgotPassword = (TextView) findViewById(R.id.forgotPassword);
        forgotPassword.setOnClickListener(this);
    }
...
    //Onclicks, textview value correctness etc...

        progressBar.setVisibility(View.VISIBLE);
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        

        mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if(task.isSuccessful()){
                    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

                    if(user.isEmailVerified()){
                        // redirect to user profile
                        progressBar.setVisibility(View.GONE);


                        startActivity(new Intent(MainActivity.this, ProfileDashboard.class));
                    }else {
                        progressBar.setVisibility(View.GONE);
                        user.sendEmailVerification();
                        Toast.makeText(MainActivity.this,"Check your email to verify your account!", Toast.LENGTH_LONG).show();
                    }


                }else{
                    progressBar.setVisibility(View.GONE);
                    Toast.makeText(MainActivity.this, "Failed to login! Please check your credentials", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

}

Realtime DatabaseAuthentication 不同。

删除身份验证中的用户即可解决问题:

正如上面提到的评论,从数据库中删除与身份验证不同。

为此,您可以使用 firebase admin SDK。 你可以在这里看到一个例子:https://firebase.google.com/docs/auth/android/manage-users.

所以基本上你可以做的是从数据库中删除用户,然后从 Firebase Auth 中删除用户以避免出现此类问题;示例:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User account deleted.");
                }
            }
        });

虽然@Dabbel 的解决方案表示将用户从控制台中移除,但确实可以解决问题,但请注意,在用户较多的情况下,此操作可能不可行。

因此,您拥有的最佳选择是通过调用 FirebaseUser#delete() 以编程方式从 Firebase Auth 中删除用户,其中:

Deletes the user record from your Firebase project's database.