2017-08-05 10 views
1

現在、Web上でfirebaseを使用しているサイドプロジェクトで作業していて、ユーザー認証を使用しています。私はユーザーがログインしてゲームルームを作成して、ゲームルームの別のページにリダイレクトします。私は、ユーザーデータのいずれかを引くことができないし、それをやってイム唯一の方法があり、おそらくこれを行うための簡単な方法のようですが、私は思えカントの初期化firebaseを再とファイヤーベースでリダイレクトした後もユーザーを維持

auth.onAuthStateChanged(function(user) { 
    if (user && user != null) { 
    uid = user.uid; 
    email = user.email; 
    currUser = user; 
    } else { 
    //user isnt logged in 
    window.location.href = 'index.html'; 
    } 

を使用しているのにページがリダイレクトした後、それを動作させるために、この方法では他のコードのセクションも壊してしまいます。

答えて

3

onAuthStateChangedコールバックを添付すると、ユーザーを取得する慣習的な方法です。

お客様firebase.auth().currentUserでユーザーを取得します。しかし、トークンのリフレッシュが必要な場合は、その場合、ユーザーがいないことを誤って検出する可能性があります。なぜonAuthStateChangedコールバックが推奨されるのですか。

Firebase documentation on getting the current userを参照してください。

+0

したがって、firebase.auth()。currentUser does not workの場合は、onAuthStateChangedを使用する必要がありますか? – jhigg15

+0

私は通常、ユーザがサインインしているという事実のために私のUIを更新するために 'onAuthStateChanged'を使用します。私はユーザがすでにサインインしていることを確信できるフローで' firebase.auth()。currentUser'を使用します。 firebase.auth()。currentUser'を呼び出して、結果が存在するかどうかを確認することはアンチパターンです。私の経験上、コードは 'onAuthStateChanged'リスナーにあるべきです。 –

関連する問題