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」字段更改並將用戶重定向到另一個頁面而無需點擊按鈕? (有企圖在「ionViewWillEnter」功能來做到這一點)

回答

1

如果用戶的電子郵件通過電子郵件驗證鏈接驗證帶外,你需要覈實後做客戶端上的兩件事情:

  1. 致電currentUser.reload。這將更新用戶的emailVerified屬性。
  2. 致電currentUser.getIdToken(true)強制令牌刷新或只是等待令牌刷新並自動獲取更改。這是需要更新令牌上的email_verified屬性。

Firebase現在允許您在驗證郵件後返回應用程序。這是通過網絡客戶端的例子: https://firebase.google.com/docs/auth/web/passing-state-in-email-actions

當你從這樣的操作返回到應用程序重新加載用戶/令牌知道用戶只需驗證其電子郵件,您可以使用此功能。以上也可以讓你在流程中傳遞狀態。