我需要根据请求删除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的值。可以删除任何值的用户。用户被删除,包括空值。
有什么建议吗?
答案 0 :(得分:2)
Firebase身份验证用户只能删除自己的帐户。他们无法删除其他用户的帐户。
即使删除自己的帐户,也要求您最近经过身份验证。这意味着您必须最近登录,或致电reauthenticate()
。
当您致电reauthenticate
时,Firebase会尝试使用您提供的凭据对当前用户进行身份验证。如果凭据与当前用户不匹配,则操作将失败。