2016-07-30 9 views
2

に認証された場合に取得します。私が行うと、ユーザーがFirebase initializeApp

firebase.initializeApp(config); 
firebase.auth().currentUser; 

数ミリ秒のCurrentUserにのためのリフレッシュ後の最初の時間はnullです。 しかし、後でcurrentUser値が入力されます。もちろん前に私はサインアウトなしで認証しました。

私は本当にユーザがログインしているかどうかを知るまで、initializeAppを待ち、待つことができますか?私はfirebase.initializeAppfirebase.auth()を約束していません。 ユーザーがログインしているかどうかを確認する約束はありますか?私は何も見つけることができませんでした。

答えて

1

私は今、多くの場合、ユーザーが署名されているかどうかを検出するためにonAuthStateChanged()ハンドラを使用しています。

firebase.initializeApp(config); 
    firebase.auth().onAuthStateChanged((user) => { 
     if (user == null) { 
      // TODO: start sign-in flow 
     } 
     else { 
      // TODO: start actual work 
     } 
    } 
    }); 
+0

しかしonAuthStateChangedは、ユーザがLOGGEDINれなかった場合でも呼ばれているのですか? – elranu

+0

はい。初期/現在の既知の状態ですぐに呼び出され、状態が変わるたびに呼び出されます。それを試してみてください! –

+0

これは完了です。 '.onAuthStateChanged'"オブザーバを使用することで、Authオブジェクトが中間状態にならないようにすることができます(初期化など - 現在のユーザを取得するとき)。 [Firebaseでのユーザの管理](https://firebase.google.com/docs/auth/web/manage-users) BTW - 私は[GithubのWeb認証の定型句](https://github.com/rhroyston/firebase-auth)を持っています。デモ[ここ](https://rack.pub/firebase-auth)。 –

関連する問題