2017-10-16 1 views
0

사용자의 이메일을 업데이트하려고하지만 firebase에 최근 로그인이 필요하므로 firebase 설명서에있는 방법을 사용하려고했지만 문제는 어떻게 전달할 수 있습니까? 암호 사용자? 암호를 db로 유지하지 않고 firebase에서 가져올 수 없기 때문에 암호를 어떻게 전달할 수 있는지 알지 못합니다.Firebase에서 사용자를 재 인증하는 방법

내가 생각한 해결책은 사용자에게 암호 입력을 요청하는 것이므로 암호를 입력하기 위해 필드를 사용하려고 시도했지만 여전히 작동하지 않으므로 암호를 firebase에 전달하고 사용자를 다시 인증하려면 어떻게해야합니까? 데이터를 변경 하시겠습니까?

답변

0

documentation을 참조하여 사용자를 다시 인증해야합니다.

는 예를 들어 당신은 사용자가 입력 자신의 비밀번호, 이제 그것은`에게 글고 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."); 
       } 
      } 
     }); 
관련 문제