Firebase プロジェクトのユーザー

Firebase User オブジェクトは、Firebase プロジェクトのアプリに登録したユーザーのアカウントを表します。アプリには通常、多くのユーザーが登録されていて、Firebase プロジェクトの各アプリはユーザー データベースを共有しています。

Firebase User インスタンスは Firebase Auth インスタンスに依存しません。これは、同じコンテキストで異なるユーザーを別々に参照しながら、各ユーザーのメソッドをどれでも呼び出すことができることを意味します。

ユーザー プロパティ

Firebase User の固定された基本プロパティ(一意の ID、メインのメールアドレス、名前、写真の URL)はプロジェクトのユーザー データベースに格納されており、ユーザー(iOSAndroidウェブ)はこれらのプロパティを更新することができます。Firebase User オブジェクトに他のプロパティを直接追加することはできませんが、代わりに Firebase Realtime Database に追加プロパティを格納することができます。

ユーザーが初めてアプリに登録するときに、利用可能な情報を使用してユーザーのプロフィール データが設定されます。

  • ユーザーがメールアドレスとパスワードを使用して登録した場合は、メインのメールアドレスのプロパティのみが設定されます。
  • ユーザーがフェデレーション ID プロバイダ(Google や Facebook など)を使用して登録した場合は、そのプロバイダから提供されるアカウント情報を使用して Firebase User のプロフィールが設定されます。
  • ユーザーがカスタム認証システムで登録した場合は、設定する情報を明示的に Firebase User のプロフィールに追加する必要があります。

ユーザー アカウントを作成したら、ユーザーの情報を再読み込みすることによって、ユーザーが別の端末で変更した情報を取り込むことができます。

プロバイダにログインする

Firebase アプリでユーザーのログインを行うには、メールアドレスとパスワード、フェデレーション ID プロバイダ、カスタム認証システムなど、複数の方法を使用できます。ユーザーには複数のログイン方法を関連付けることができます。たとえば、ユーザーはメールアドレスとパスワードまたは Google ログインを使って同じアカウントにログインすることができます。

Firebase User インスタンスは、ユーザーにリンクされたすべてのプロバイダを追跡します。これによって、プロバイダから提供された情報を使用して、空のプロフィールのプロパティを更新できます。ユーザー(iOSAndroidウェブ)の管理についての記事をご覧ください。

現在ログインしているユーザー

登録またはログインすると、そのユーザーは Auth インスタンスの現在ログインしているユーザーになります。Firebase Auth インスタンスはユーザーの状態を保持するため、ブラウザでページを更新したり、アプリを再起動したりしても、ユーザー情報は失われません。

ユーザーがログアウトすると、Auth インスタンスは User オブジェクトへの参照を停止し、状態の保持も停止します。これにより、現在ログインしているユーザーはいなくなります。ただし、ユーザー インスタンスは引き続き完全に機能します。ユーザー インスタンスに対する参照を保持すると、引き続きユーザーのデータにアクセスして更新できます。

ユーザーのライフサイクル

Firebase Auth インスタンスの現在の状態を追跡するために推奨される方法は、リスナー(JavaScript では「オブザーバー」と呼ばれます)を使用することです。Auth オブジェクトに関連があることが発生すると、Auth リスナーに通知が届きます。ユーザー(iOSAndroidウェブ)の管理についての記事をご覧ください。

Auth リスナーは次の場合に通知を受け取ります。

  • Auth オブジェクトの初期化が終了し、ユーザーが前のセッションで既にログイン済みか、または ID プロバイダのログインフローからリダイレクトされたとき。
  • ユーザーがログインしたとき(現在ログインしているユーザーとして設定)。
  • ユーザーがログアウトしたとき(現在ログインしているユーザーが null になる)。
  • 現在ログインしているユーザーのアクセス トークンが更新されたとき。これは、次の状態のときに発生します。
    • アクセス トークンの有効期限が切れたとき。これはよくある状況です。更新トークンは、新しい有効なトークンのセットを取得するために使用されます。
    • ユーザーがパスワードを変更したとき。Firebase からアクセスと更新の新しいトークンが発行され、古いトークンは有効期限切れになります。セキュリティ上の理由で、ユーザーのトークンは自動的に有効期限切れになるか、ユーザーはすべての端末から自動的にログアウトされます。
    • ユーザーが再認証されたとき。一部のアクション(アカウントの削除、メインのメールアドレスの設定、パスワードの変更など)では、ユーザーの認証情報が最近発行されたものである必要があります。ユーザーをログアウトして再度ログインしてもらう代わりに、ユーザーから新しい認証情報を取得して User オブジェクトの再認証メソッドに渡します。

認証トークン

Firebase での認証を行うとき、次の 3 種類の認証トークンが使用されます。

Firebase ID トークン ユーザーが Firebase アプリにログインしたときに Firebase によって作成されます。これらのトークンは署名済みの JWT で、Firebase プロジェクトのユーザーを安全に識別します。これらのトークンには、Firebase プロジェクト内で一意のユーザー ID 文字列など、ユーザーの基本的なプロフィール情報が含まれています。ID トークンの整合性は検証可能なため、ID トークンをバックエンド サーバーに送信して、現在ログインしているユーザーを識別できます。
ID プロバイダ トークン Google や Facebook などのフェデレーション ID プロバイダによって作成されます。形式が異なることもありますが、多くは OAuth 2.0 アクセス トークンです。Firebase のアプリはこれらのトークンを使用して、ユーザーが ID プロバイダによって正常に認証されたことを確認し、Firebase サービスが利用できる認証情報に変換します。
Firebase カスタム トークン ユーザーが認証システムを使用して Firebase アプリにログインできるようにするため、カスタム認証システムによって作成されます。カスタム トークンは、サービス アカウントの秘密鍵を使って署名された JWT です。Firebase アプリは、フェデレーション ID プロバイダから返されたトークンと同じように Firebase カスタム トークンを使用します。

フィードバックを送信...