0
我試圖更新用戶的電子郵件,但firebase需要最近一次登錄,因此我嘗試使用firebase文檔中的方法,但問題是如何通過密碼用戶?我沒有將密碼保存在數據庫中,並且我無法從Firebase中獲取密碼,所以我不知道如何通過密碼。如何在Firebase上重新驗證用戶
我認爲解決方案是要求用戶輸入密碼,所以我嘗試使用字段輸入密碼,但它仍然不起作用,所以如何將密碼傳遞給firebase並重新認證用戶改變數據?
我試圖更新用戶的電子郵件,但firebase需要最近一次登錄,因此我嘗試使用firebase文檔中的方法,但問題是如何通過密碼用戶?我沒有將密碼保存在數據庫中,並且我無法從Firebase中獲取密碼,所以我不知道如何通過密碼。如何在Firebase上重新驗證用戶
我認爲解決方案是要求用戶輸入密碼,所以我嘗試使用字段輸入密碼,但它仍然不起作用,所以如何將密碼傳遞給firebase並重新認證用戶改變數據?
您需要重新驗證用戶,請參閱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("[email protected]")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User email address updated.");
}
}
});