開発Tips

Firebase Authentication で「なぜかログインできないユーザー」がいた話

ログ簿ではログイン機能に Firebase Authentication を使っています。あるとき、「特定のユーザーだけ、ある日突然ログインできなくなった」という報告を受けました。その調査メモです。

症状: クラッシュもログも出ない

やっかいだったのは、

  • アプリはクラッシュしていない
  • したがってログも取れない
  • なのに、その人だけログインできない
  • しかも「ある日突然」できなくなった

という点。手がかりが少なく、原因の見当がつきませんでした。

ユーザーさんの協力を得て試行錯誤

実際に使えなくなったユーザーさんに協力してもらい、いくつか試しました。しかし再現手順を踏んでもダメで、クラッシュしないのでログも残らず、原因の特定には至りませんでした。

解決: Firebase コンソールで「無効化 → 有効化」

ダメ元で、Firebase の Authentication ダッシュボードから当該ユーザーを一度削除して作り直してもらおうとしたところ、操作画面に「無効にする」という選択肢を見つけました。

試しに、そのユーザーを 一度「無効」にしてから、再度「有効」に戻したところ——

「ログインできました!」

と連絡をいただけました。アカウント自体を作り直さずに、無効化→有効化のトグルだけで復旧できたことになります。

考察

何かの拍子に Firebase 側でそのアカウントの状態が不整合になっていた、という可能性が高そうです。無効化→有効化で内部状態がリセットされ、復旧したのだと考えています。

この件で気づいたのは、アプリ側にログアウトはあってもユーザー削除機能がなかったこと。ユーザー自身でアカウントを作り直せる導線があれば、こうした「作り直せば直る問題」を自己解決してもらえたかもしれません(改善課題として issue 化しました)。

まとめ

Firebase Authentication で「クラッシュしないのに特定ユーザーだけログインできない」ときは、コンソールでそのユーザーを無効化→有効化してみる価値があります。原因の完全特定には至らなくても、まず復旧させる手段として覚えておくと安心です。