我正在尝试创建一个按钮,允许用户删除自己的帐户。但是,单击它会导致标题为"The supplied auth credential is malformed or has expired"
的错误ERROR_INVALID_CREDENTIAL
。根据我的研究,“刷新” ID令牌似乎有问题。如果我注销后再次登录,然后在几分钟内单击该按钮,该按钮将正常工作。但是,如果我登录时间过长,帐户删除将失败。
我不确定如何解决此问题,但是如下所示,我已经尝试过重新认证。这是单击按钮时调用的方法。
谢谢!
void deleteUser(){
// Get Firebase user and Google account
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
GoogleSignInAccount acct = GoogleSignIn.getLastSignedInAccount(this);
if (acct != null) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
user.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
user.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(
AccountActivity.this, LoginActivity.class);
startActivity(intent);
Toast.makeText(AccountActivity.this, "Account deleted",
Toast.LENGTH_SHORT).show();
}
}
});
} else {
try {
throw task.getException();
} catch(Exception e) {
Log.e("TAG", e.getMessage());
}
Toast.makeText(AccountActivity.this, "Account deletion failed!",
Toast.LENGTH_SHORT).show();
}
}
});
} else {
Toast.makeText(AccountActivity.this, "No user found!",
Toast.LENGTH_SHORT).show();
}
}