2016-08-30 16 views
1

私のアプリにFirebase認証を統合しました。既にログインしているユーザーがいても、ログイン画面が表示されます。FirebaseAuthの初期化を待つ方法は?

アプリを終了してもう一度起動すると、問題が解決しますユーザーに再び悪い経験を提供するが、ユーザーに再びサインインするように要求することはありません)。

私はドキュメントを読みましたが、FirebaseAuth.getInstance().getCurrentUser()を呼び出すと、認証が初期化を完了していない場合はnullが返される可能性があります。私はそれが問題が起こる理由だと仮定しています。だから私はgetCurrentUser()を呼び出す前にFirebaseAuthが初期化を完了するのを待つ方法があるのだろうか?

+0

数秒待つことができる実行可能ファイルがありますか? – Eenvincible

+0

私はすでに起動画面用のものを持っています。 5秒間待つように設定されています。私はもはやユーザがそれよりもさらに長く待つことはできません。 –

答えて

0

あなたは認証が行われたときに、このリンクはあなたを助けるかもしれないあなたを教えてリスナーを必要とする:FirebaseAuth.AuthStateListener

+0

これとDougの答えはユーザーにとっては効果的ですが、実際には彼の質問には答えません。彼の質問は、firebase auth()が初期化を完了したときを約束する/決める手段がありましたか?_ –

+0

カルバックが呼ばれたときに、これらのケースのどちらが当てはまるかをどのように知っていますか? 'このメソッドは、認証状態の変更時にUIスレッドで呼び出されます。 リスナーが登録された直後 ユーザーがログインしたときには、 – user3175580

0

時間で、この瞬間に、ユーザーであることが知られています、場合は、知っているgetCurrentUser()を呼び出すことができますユーザーがログインまたはログアウトしたときにコードを起動する必要がある場合は、変更があったときに通知を受けるリスナーを登録する必要があります。その変更をトリガーするメソッドaddAuthStateListener()があります。発生する条件を正確に理解するには、javadocを必ず読んでください。あなたが追加する側のAuthStateListenerには、ユーザーがログインしているかどうかを知るためにgetCurrentUser()を呼び出すことができます。

+0

はログイン直後に保証されません。 authオブジェクトの初期化が完了していない可能性があります。さらに、ヌル以外のユーザーオブジェクトを戻すこともありますが、その上のすべてのフィールド/プロパティーは引き続きヌルです。ログインメソッド.onComplete()は、authStateListenerが完了する前に起動します。 – FirefighterBlu3

+0

@ FirefighterBlu3特定の再現例がある場合は、バグレポートを提出してください。不一致はないはずです。 https://firebase.google.com/support/contact/bugs-features/ –

関連する問題