Note

3年後の自分のために書いています

React Native × Firebase Authentication での自動ログイン機能に AsyncStorage は使わなくていい

タイトルのまんまですが、 Web に落ちてる記事の中にはわざわざログイン状態を React Native の AsyncStorage を使って保存してる実装のものもあったので、勘違いしないようにメモ。

Firebase Authentication では デフォルトで 明示的にログアウトするまでセッションを維持してくれます。

Authentication State Persistence  |  Firebase

'local': ブラウザ ウィンドウを閉じたり React Native でアクティビティが破棄されたりした場合でも、状態が維持されることを示します。この状態をクリアするには、明示的なログアウトが必要です。Firebase Auth のウェブ セッションは単一のホストを生成元とするため、単一のドメインでのみ永続化されることに注意してください。

...

ウェブブラウザと React Native アプリのデフォルトは local (ブラウザがこのストレージ メカニズムをサポートしている場合、たとえばサードパーティCookie / データが有効な場合など)で、Node.js バックエンドアプリでは none になります。

ログインしてるかどうかは firebase.auth().onAuthStateChanged() などで取得できます。

雑記

Firebase Authentication では明示的にログアウトしなくても他のユーザとして再度ログインかサインアップすればログインアカウントが切り替わるというのも(当たり前なんですが)挙動確認できたので、メモしておきます。