2016-06-19 2 views

답변

5

FireBase는 전자 메일이 확인되고 그러한 인터페이스가 "현재 고려되지 않음"일 때 클라이언트에게 알릴 수있는 직접적인 방법이없는 것으로 보입니다.

function registerUserAndWaitEmailVerification(email, password, showWaitUI) { 
    return new Promise(function(resolve, reject) { 
     let interval=null; 

     firebase.auth().createUserWithEmailAndPassword(email, password).then(
      user => { 
       user.sendEmailVerification().then(
        () => { 
         if (showWaitUI) showWaitUI(); 
         interval = setInterval(() => { 
          user.reload().then(
           () => { 
            if (interval && user.emailVerified) { 
             clearInterval(interval); 
             interval=null; 
             resolve(user); 
            } 
           }, error => { 
            if (interval) { 
             clearInterval(interval); 
             interval=null; 
             console.log('registerUserAndWaitEmailVerification: reload failed ! '+error.message+' ('+error.code+')'); 
             reject(error); 
            } 
           } 
          ); 
         }, 1000); 
        }, error => { 
         console.log('registerUserAndWaitEmailVerification: sendEmailVerification failed ! '+error.message+' ('+error.code+')'); 
         reject(error); 
        }); 
      }, error => { 
       console.log('registerUserAndWaitEmailVerification: createUserWithEmailAndPassword failed ! '+error.message+' ('+error.code+')'); 
       reject(error); 
      } 
     ); 
    }); 
} 

코드 것 :

  • 전화 sendEmailVerification
  • 전화 showWaitUI (주어진 경우)

    • 호출이 createUserWithEmailAndPassword, 여기에 클라이언트가해야

      나는 다음과 같은 솔루션을 함께했다 문제가 발견되면 모달 안내 ('확인을 위해 이메일을 확인하십시오. 링크를 클릭하십시오. ')와 모래에

    • 는 currentUser.reload() 초마다 호출하고, 하나 currentUser.emailVerified와 인증에 성공 == true 또는 오류가 인증에
    • 결의를 발생하는 경우() 정지 간격 루프를 시작
    • . 사용자가 성공적으로 광석이와 함께 오류

    으로 거부 인증이 있다면 당신은 할 수 있습니다 :

    function showRegisterUI() { 
        // show a modal with instructions ('Please check your email for the confirmation link.') and an hourglass  
    } 
    
    registerUserAndWaitEmailVerification(email, password, showRegisterUI).then(
        user => { 
         // uid in user.uid 
        , error => { 
         // alert user with error.message, go back to login screen 
        } 
        ); 
    } 
    

    희망이 도움이 :)

  • +1

    투표까지 : 완벽한 해답! – user2783091

    관련 문제