0

firebaseでの電子メール検証の開発中に問題が発生しました。Ionic 3の火災基地で、電子メールが確認されたことが示されていません。

メールアドレスを確認しようとするたびに、ユーザーのメールアドレスが確認されたという情報を得ることができません。

は、私はこのようなコードを持っている:

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」機能でこれを行うにしようとした)、確認した後、クライアント上で2つのことを実行する必要があります。

  1. コールcurrentUser.reloadこれにより、ユーザーのemailVerifiedプロパティが更新されます。
  2. currentUser.getIdToken(true)を呼び出して強制的にトークンをリフレッシュするか、トークンがリフレッシュされるのを待って自動的に変更を取得します。これは更新するトークンのemail_verifiedプロパティに必要です。

Firebaseでは、電子メールの確認後にアプリケーションに戻ることができます。 https://firebase.google.com/docs/auth/web/passing-state-in-email-actions

この操作からアプリに戻って、ユーザーが自分のメールを確認したことを知っているユーザー/トークンをリロードするときに使用できます。上記では、フローの状態を渡すこともできます。

関連する問題