Firebase AuthでログインしているのにgetCurrentUser関数がnullを返してしまう時の解決法

Firebase Authenticationでログイン済みなのにgetCurrentUser()がnullを返す問題を解決!Authオブジェクトの初期化タイミングとonAuthStateChangedの正しい使い方を解説。よくある落とし穴とその回避方法を詳しく説明します。

Share

この記事では、Firebase Authenticationを用いたアプリ開発において、 ログインしているにも関わらずgetCurrentUserメソッドがnullを返す場合の原因と解決法を解説します。

公式ドキュメントの該当ページ: https://firebase.google.com/docs/auth/web/manage-users?hl=ja

状況

Firebase Authenticationでは、getCurrentUserメソッドを利用して、現在ログインしているユーザーの情報を取得することができます。

しかし、ログインしているのにも関わらず、このメソッドがnullを返すことがあります。

原因:なぜgetCurrentUsernullを返すのか

この問題の原因は、Firebase AuthenticationのAuthオブジェクトが完全に初期化されていない状態にあります。

Authが初期化されずにgetCurrentUserを呼び出してしまうとnullが返されるのです。

Firebaseの公式ドキュメントにはこの点が指摘されていますが、その注意書きは小さく記述されているだけなので、気づきづらいのです。。。

> 注: currentUser が null になる原因としては、Auth オブジェクトの初期化が完了していないことも考えられます。オブザーバーを使用してユーザーのログイン ステータスを追跡している場合は、この状況に対処する必要はありません。
[https://firebase.google.com/docs/auth/web/manage-users?hl=ja#get_the_currently_signed-in_user](https://firebase.google.com/docs/auth/web/manage-users?hl=ja#get_the_currently_signed-in_user)
>

nullを返す2つのパターン

つまり、getCurrentUsernullを返す場合、2つの異なるパターンがあります。

  1. ユーザーが実際にログインしていない状態。
  2. ユーザーはログインしているが、Authオブジェクトの初期化が完了していないためにnullが返される状態。

もちろん、1の「実際にログインしていない状態」ならばnullで合っているので問題ありません。

解決策

この問題に対処する最も直接的な方法は、onAuthStateChangedを使用してログイン状態の変化を監視することです。

Firebase Authenticationでのログイン状態の監視とgetCurrentUsernullを返す問題の解決には、Firebaseの認証状態の変更をリッスンするonAuthStateChangedメソッドを利用します。JavaScriptでの実装例は以下のようになります。

Firebaseの初期化(initializeApp)

まず、Firebaseプロジェクトの初期化が必要です。このステップは、Firebaseプロジェクトを作成し、WebアプリにFirebaseを追加した後に提供される設定情報を使用して行います。

// Firebaseプロジェクトの設定。実際のプロジェクトに合わせて値を設定してください。
var firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID"
};
 
// Firebaseを初期化
firebase.initializeApp(firebaseConfig);
 

onAuthStateChangedを実行してAuthを初期化する

次に、onAuthStateChangedリスナーを使用してユーザーのログイン状態を監視します。

このリスナーは、ユーザーのログイン状態が変更されるたびに呼び出されます。ユーザーがログインしている場合はユーザー情報が、ログアウトしている場合はnullが渡されます。

 
// Authオブジェクトを初期化する
firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // ユーザーがログインしている状態
    console.log("Logged in user:", user);
    // 必要に応じて、ここでユーザー情報を利用した処理を行う
  } else {
    // ユーザーがログアウトしている状態、またはAuthオブジェクトの初期化が完了していない状態
    console.log("No user is logged in or the Auth object is not initialized yet.");
    // ログインページへのリダイレクトなど、必要に応じて処理を行う
  }
});
 

これによって、Firebase AuthenticationのgetCurrentUsernullを返す問題に対処し、ユーザーのログイン状態の変更を効果的に監視できるようになります。

さらに付け加えると、毎回初期化するのはイケていないので、getCurrentUserの結果がnullの場合にだけonAuthStateChangedを実行するのが良いでしょう。

ユーザーがログインしているかどうかを確認し、ログインしている場合はその情報を利用する、あるいはログインしていない場合にはログインページにリダイレクトするなど、適切な処理を記述できます。

まとめ

Firebase Authenticationを使用する際にgetCurrentUsernullを返す問題は、Authオブジェクトの初期化が完全に終了していないことによって起こります。

この問題を解決するためには、onAuthStateChangedを使用してユーザーのログイン状態の変化を監視する必要があります。

その後、getCurrentUserによってユーザー情報を取得できます。

なお、onAuthStateChanged自体もユーザー情報を渡してくれるので、そこで保管する方法でも良いです。

Read more

サービス更新履歴

ここでは、LiveQのサービス・製品への変更を全て紹介しております。 このページは大きな変更があった場合に更新されます。 いつごろにどのような機能がリリースされたかが分かります。 2026年6月: 高速化・安定化 * 5月よりサーバーおよびアプリケーションの大型リニューアルに取り組み、6月に読み込み速度の向上や、大規模アクセス時にも安定して高速に動作するように変更をおこないました。 2026年4月: 画像スライド * 新たなスライドの種類として画像スライドを追加しました。 * PowerPoint, PDFファイルを一括インポートし、画像スライドとして追加する機能を追加しました * そのほか多数の細かな変更(操作性などのデザイン改善や、不具合)をおこないました 2026年3月: ワードクラウド、コメントのAIモデレーション(監視) * 新たなスライドの種類としてワードクラウドを追加しました * コメントをAIで自動監視する機能をリリースしました * そのほか細かな改善や不具合の修正をおこないました 2026年2月: 有料プランのデータエクスポート

By 阿部 隼也

チームメンバーを招待する方法

チームメンバーを追加するには、招待する必要があります。 その招待方法を紹介します。 招待可能なチームメンバーの数は、ご利用のプランによって異なるため、事前にご確認ください。 チームページの「新しいチームメンバーを招待」にて、招待するメンバーのメールアドレスを入力し、「招待を送信」をクリックします。 招待された側で招待を承認 次に、招待された側の方によって招待を承認する必要があります。 ※この承認にはLiveQのアカウントが必要となりますので、必ず事前にご登録ください。 下記のような招待メールが届きます。 件名:【LiveQ】チームへの招待が届いています 差出人:[email protected] 既にLiveQに登録済みの方はそのまま「招待を承認して参加する」ボタンをクリックします。 まだLiveQに登録していない方は、登録後、同様に承認ボタンをクリックします。 チームを切り替える 招待を承認すると、チームページに下記のように「チーム切り替え」ができるようになります。 招待したユーザーにもメールが届きます 招待が承認されると、招待したユーザーに

By 阿部 隼也