0

firebase로 이메일 확인을 개발하는 동안 문제가 발생했습니다.Ionic 3 firebase에 이메일 확인이 표시되지 않음

전자 메일 주소를 확인할 때마다 사용자의 전자 메일 주소가 확인되었다는 정보를 얻을 수 없습니다.

는이 같은 코드가 있습니다

constructor(private afAuth: AngularFireAuth, public navCtrl: NavController, public navParams: NavParams) { 
} 

ionViewWillEnter() { 
    this.afAuth.auth.onAuthStateChanged(user => { 
    if (user && user.emailVerified) { 
     this.navCtrl.setRoot(ShoppingListPage); 
    } 
    }); 
} 

proceedButtonHandler() { 
    this.afAuth.auth.onAuthStateChanged(user => { 
    if (user && user.emailVerified) { 
     this.navCtrl.setRoot(ShoppingListPage); 
    } 
    }); 
} 

을하지만 이메일 주소를 확인하고 proceedButtonHandler 기능을 실행 한 후 나는 페이지를 새로 고침하지 않는 한, user.emailVerified 필드에 난 항상, "거짓"결과를 얻을.

사용자의 이메일이 현재 인증되었는지 어떻게 알 수 있습니까? "emailVerified"필드 변경을 감시하고 단추를 클릭하지 않고 사용자를 다른 페이지로 리디렉션 할 수있는 방법이 있습니까? 사용자의 이메일이 이메일 확인 링크를 통해 밴드에서 확인하면

답변

1

("ionViewWillEnter"기능에서이 작업을 수행하기위한 시도가), 당신은 확인 후 클라이언트에이 일을해야합니다

  1. currentUser.reload으로 전화하십시오. 그러면 사용자의 emailVerified 속성이 업데이트됩니다.
  2. currentUser.getIdToken(true)을 호출하여 강제로 토큰을 새로 고치거나 토큰이 새로 고쳐지기를 기다리면 자동으로 변경 사항이 적용됩니다. 업데이트 할 토큰의 email_verified 속성에 필요합니다.

이제 Firebase에서는 이메일 확인 후 앱으로 돌아갈 수 있습니다. 다음은 웹 클라이언트를 통한 예입니다. https://firebase.google.com/docs/auth/web/passing-state-in-email-actions

사용자가 자신의 이메일을 확인한 것을 알고 사용자/토큰을 다시로드하기 위해 이러한 작업에서 앱으로 돌아갈 때 사용할 수 있습니다. 위의 경우 흐름에서 상태를 전달할 수도 있습니다.