2016-08-22 2 views
4

웹용 Firebase 인증을 처리 중입니다. documentation 상태는Firebase : 최근 로그인 요청

일부 보안에 민감한 행동-같은 계정을 삭제 기본 이메일 주소를 설정하고 변경하는 등 사용자가 최근에 서명했다고 비밀번호를-필요가있다.

하는 경우 아니요. 요청은 오류 코드 auth/requires-recent-login과 함께 실패하고 사용자에게 자격 증명을 다시 삽입하라는 메시지를 표시하여 사례를 관리해야합니다. 내가 그 일을하면, 난 쉽게 다음 코드로 사용자를 다시 인증 할 수 있습니다 : API를 reference에서

firebase.auth().currentUser.reauthenticate(credential) 

이 몇 가지 세부 사항 더있다. 실제로 credentialfirebase.auth.AuthCredential 유형의 개체입니다. 즉, 나는 아직도 질문에 대한 답을 찾지 못했다.

  1. AuthCredential 개체는 어떻게 만듭니 까?
  2. 더 중요한 것은 제공자 (Google, Facebook, ...)를 어떻게 처리해야합니까? 나는 이메일/패스워드를 변경하는 것이 공급자를 이해하지 못한다는 것에 동의한다. 왜냐하면 이것이 바른 장소가 아니기 때문에 제공자에게 재검사가 필요하지 않기 때문이다. 그러나 사용자 삭제은 여전히 ​​재 인증이 필요한 작업이며 인증 방법에 관계없이 수행 할 수 있습니다. 공급자와 함께 로그인 한 사용자를 어떻게 다시 인증합니까?
  3. 설명서에는 사용자가 에 로그인해야합니다. 문서에서 최근의 정의를 찾을 수 없습니다.

답변

3
    당신은 어떤 공급자에 자격 증명 정적 메서드를 호출하여 자격 증명을 초기화 할 수 있습니다
  1. 이 (이메일/비밀번호 제공자 포함) : firebase.auth.FacebookAuthProvider.credential(fbAccessToken);

  2. 는 OAuth를 제공을 재 인증을, 당신은 브라우저 signInWithPopup에서 호출 할 수 있습니다 또는 리디렉션. 그러면 사용자 및 자격 증명의 두 필드가있는 객체가 반환됩니다. 해당 자격 증명을 직접 사용할 수 있습니다. 중포 기지의 인증 백엔드가 변경 될 수 있으므로

    var tempApp = firebase.initializeApp(originalConfig, 'temp'); var provider = new firebase.auth.FacebookAuthProvider(); tempApp.signInWithPopup(provider).then(function(result)) { tempApp.auth().signOut(); originalApp.auth().currentUser.reauthenticate(credential); });

  3. 중요하지 않습니다 : 다음은 간단한 예입니다. 이 값을 하드 코딩하면 안됩니다. 대신 그 오류를 잡으려고 시도하고 적절하게 행동하십시오.

+0

감사합니다. 하지만 fbAccessToken은 어떻게 얻습니까? – Richard

+0

당신의 유스 케이스는 무엇입니까? 1. 이미 가지고 있다고 가정합니다. 어쩌면 페이스 북 SDK에서. – bojeil

관련 문제