🏛️

【firebase】onAuthStateChangedとcurrentUserの違い

2021/08/14に公開

firebaseでログイン状態を監視して、それに応じたcomponentを描写したり、redirect処理をしたりする際によく使うのがonAuthStateChangedcurrentUserだと思います。この2つの違いで実装時に悩みました。

違い

Answer:上位のAuthオブジェクトがの初期化状態を待ってから情報を取得するかそうでないか

onAuthStateChangedではAuthオブジェクトの状態を待ってから確認することができます。従って、Authオブジェクトの状態次第でcurrentUserで取得した値は、ログインしていてもnullになる可能性があります。

公式のドキュメントにも下記のような記載があります。

注: currentUser が null になる原因としては、Auth オブジェクトの初期化が完了していないことも考えられます。オブザーバーを使用してユーザーのログイン ステータスを追跡している場合は、この状況に対処する必要はありません。

間違ってnullが入らないためにも、onAuthStateChangedでログイン状態を管理する方が良いです。

参考リンク

https://firebase.google.com/docs/auth/web/manage-users?hl=ja#get_the_currently_signed-in_user

Discussion