使用用户名和密码验证删除Firebase用户

时间:2018-05-27 17:44:56

标签: android firebase firebase-authentication

我需要根据请求删除Firebase中的用户,但希望确保用户删除自己的帐户。所以我希望该用户输入他的用户名和密码。

我有下一个代码:

final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            AuthCredential credential = EmailAuthProvider
                    .getCredential(txtEmail.getText().toString().trim(),
                            txtPassword.getText().toString().trim());

            assert user != null;
            user.reauthenticate(credential)
                    .addOnCompleteListener(task -> user.delete()
                            .addOnCompleteListener(task1 -> {
                                progressDialog.dismiss();
                                if (task1.isSuccessful()) {
                                    //Log.d(TAG, "User account deleted.");
                                    Toast.makeText(getActivity(),  getResources().getString(R.string.delete_ok), Toast.LENGTH_SHORT).show();
                                    final Handler handler = new Handler();
                                    handler.postDelayed(() -> {

                                    //here I try to close my app from a fragment but no success    

                                     Activity act = getActivity();
                                        if (act instanceof ActivityHome) {
                                            ((ActivityHome) act).onClose();
                                        }
                                }, 2000);
                                } else {
                                    Toast.makeText(getActivity(),getResources().getString(R.string.delete_cancel) , Toast.LENGTH_SHORT).show();
                                }
                            }));

删除了用户,但忽略了txtEmail和txtPassword的值。可以删除任何值的用户。用户被删除,包括空值。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

Firebase身份验证用户只能删除自己的帐户。他们无法删除其他用户的帐户。

即使删除自己的帐户,也要求您最近经过身份验证。这意味着您必须最近登录,或致电reauthenticate()

当您致电reauthenticate时,Firebase会尝试使用您提供的凭据对当前用户进行身份验证。如果凭据与当前用户不匹配,则操作将失败。