我正在尝试更新用户的电子邮件,但firebase需要最近登录,所以我尝试使用firebase文档中的方法,但问题是如何传递密码用户?我没有在db中保存密码,我无法从firebase获取密码,所以我不知道如何传递密码。
我认为解决方案是要求用户输入密码,所以我尝试使用字段输入密码但它仍然不起作用,所以如何将密码传递给firebase并重新验证用户改变数据?
答案 0 :(得分:1)
您需要重新验证用户,请参阅documentation。
例如,您有一个用户输入密码的字段,让我们说它是一个EditText etPassword ,并且您在 SharedPreferences 中有用户电子邮件
因此,重新验证的代码将如下所示:
AuthCredential credential = EmailAuthProvider
.getCredential(SharedPreferences.getmail(),etPassword.getText().toString());
// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "User re-authenticated.");
if(task.isSuccessful()){
updateUserEmail();
} else {
// Password is incorrect
}
}
});
其中 updateUserEmail()是
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.updateEmail("user@example.com")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User email address updated.");
}
}
});