2017-07-11 14 views
1

私はこれまで、onAuthStateChangedをトリガーすることができました。firebase v4での再認証ができません。javascript

firebase.auth.currentUser.reload() 
firebase.auth.currentUser.getToken(true) 

私はしかしもうonAuthStateChangeを再トリガされていないfirebase以前と新しいアプローチのV4とgetIdToken

firebase.auth.currentUser.reload() 
firebase.auth.currentUser.getIdToken(true) 

にそれらを更新しました。今でもそれを達成する方法はありますか?ユーザがログアウトする必要がないサインアップフロー - >サインアップ - >電子メールを確認する - >上記の2つの機能を呼び出す "続行"ボタン - >onAuthStateChangedは、今ユーザの電子メールで確認されます。

答えて

2

バージョン2.xのFirebase認証では、auth state changedハンドラは、ユーザの認証ステートが変更されたときにのみ呼び出されました。彼らがサインインまたはサインアウトしたとき。

Firebase Authentication SDKのバージョン3.xでは、トークンのリフレッシュのために同じコールバックが呼び出されました。しかし、これは、たとえ認証状態が変更されていなくても(トークンが行ったとしても)このコールバックが呼び出されるため、開発者がUIを効率的に更新することに問題があります。

これは、この動作がv4で実際に変更された理由です。onAuthStateChangedはトークンのリフレッシュのためにもう起動しません。そこからhttps://firebase.google.com/docs/reference/js/firebase.auth.Auth#onIdTokenChanged

その場合、火災を行う別onIdTokenChanged()方法がある

は、ログインしているサインイン含むユーザのIDトークンへの変更のためにオブザーバーを追加し、符号が-out、およびトークンリフレッシュイベント。このメソッドの動作は、4.0より前のfirebase.auth.Auth#onAuthStateChangedと同じです。

例:

firebase.auth().onIdTokenChanged(function(user) { 
    if (user) { 
    // User is signed in or token was refreshed. 
    } 
}); 
+1

ああ、私が見る、面白いが、私と仮定し、 '' onIdTokenChanged firebaseは同様にユーザーのトークンを更新したときにトリガされますか? – Ilja

+0

上記に追加すると、ユーザーがゲームをプレイ中にトークンの更新が行われる途中で、この機能がユーザーの再読み込みなしで開始されると想定します。 – Ilja

+0

@Ilja:はい、DBがトークンをリフレッシュするときに 'onIdTokenChanged'が起動します。参照ドキュメントからは、 'onIdTokenChanged'は文字通り' onAuthStateChanged'が持っていた振る舞いをしているようです。私は自分でそれをテストしなかった。 –

関連する問題