2017-10-16 50 views
0

我試圖更新用戶的電子郵件,但firebase需要最近一次登錄,因此我嘗試使用firebase文檔中的方法,但問題是如何通過密碼用戶?我沒有將密碼保存在數據庫中,並且我無法從Firebase中獲取密碼,所以我不知道如何通過密碼。如何在Firebase上重新驗證用戶

我認爲解決方案是要求用戶輸入密碼,所以我嘗試使用字段輸入密碼,但它仍然不起作用,所以如何將密碼傳遞給firebase並重新認證用戶改變數據?

回答

0

您需要重新驗證用戶,請參閱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."); 
       } 
      } 
     }); 
相關問題