2017-09-12 22 views
0

私はFirebase Auth uidを使用して個々のユーザーインスタンスを識別するReact Nativeアプリケーションに取り組んでいます。 私の最初の実装はすべての起動時にsignInAnonymouslyと呼ばれ、非永続的なuidを返しました。Firebaseで匿名でログインする方法を教えてください。

Anonymous user in Firebaseを参照すると、私のコードはこのようになりました。期待どおりに動作しますが、このコードが正しい理由はまだ不明です。

static ensureLogin() { 
    return new Promise((resolve, reject) => { 
    firebase.auth().onAuthStateChanged((user) => { 
     if (user) { 
     resolve(user) 
     } else { 
     firebase.auth().signInAnonymously() 
      .catch(function(error) { 
      reject() 
      }) 
     } 
    }) 
} 

答えて

0

この質問に答えるには、この公式ドキュメントの内容を確認してください。 https://firebase.google.com/docs/auth/web/manage-users

これは、この例のコードを持っています

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 

後者のコメント行が言う「いいえユーザーが署名されていません。」 「ユーザーはログアウトしました」と表示されます。 これは、ユーザーのサインイン/アウト操作によってトリガされることを意味します。

また、以下でも説明します。オブザーバを使用することにより

、あなたは現在の ユーザーを取得するときの初期化、認証オブジェクトが 中間状態などではないことを確認してください。

これは、2つの事実を意味します。

  1. 認証オブジェクトは内部状態
  2. onAuthStateChangedだから認証オブジェクト

の状態を観察した 、我々はonAuthStateChangedが初期化を含む認証オブジェクトのいずれかの状態変化によってトリガすることができますことに気づくはずです! initの後にsignInAnonymouslyを呼び出すことは何も変わりありません。

が呼ばれ、他のブロックで signInAnonymouslyたら、それはに署名した後 onAuthStateChanged-トリガを再。コードが正しい理由です

を。

関連する問題