カスタム認証システムを使用して Firebase 認証を行う

ユーザーがログインに成功したときに署名済みのカスタム トークンが生成されるように認証サーバーを変更することで、Firebase Authentication をカスタム認証システムと統合できます。アプリはこのトークンを受信して、Firebase での認証に使用します。

始める前に

  1. まだ行っていない場合は、スタートガイドの手順に沿って操作してください。
  2. Firebase Admin SDK をインストールして構成します。Firebase プロジェクトの正しい認証情報を使用して SDK を初期化してください。

Firebase で認証する

  1. ユーザーがアプリにログインしたら、そのユーザーのログイン認証情報(たとえば、ユーザー名とパスワード)を認証サーバーに送信します。サーバーにより認証情報が確認され、認証情報が有効な場合は、Firebase カスタム トークンを作成して、トークンをアプリに返します。

  2. 認証サーバーからカスタム トークンを受信したら、signInWithCustomToken() に渡してユーザーのログインを行います。

    try {
        final userCredential =
            await FirebaseAuth.instance.signInWithCustomToken(token);
        print("Sign-in successful.");
    } on FirebaseAuthException catch (e) {
        switch (e.code) {
            case "invalid-custom-token":
                print("The supplied token is not a Firebase custom auth token.");
                break;
            case "custom-token-mismatch":
                print("The supplied token is for a different Firebase project.");
                break;
            default:
                print("Unknown error.");
        }
    }
    

次のステップ

ユーザーが作成した新しいアカウントは Firebase プロジェクトの一部として保存されます。このアカウントは、ユーザーが使用するログイン方法に関係なく、プロジェクトのすべてのアプリでユーザーの識別に使用できます。

アプリでは、User オブジェクトからユーザーの基本的なプロフィール情報を取得します。ユーザーを管理するをご覧ください。

Firebase Realtime Database と Cloud Storage のセキュリティ ルールでは、ログイン済みユーザーの一意のユーザー ID を auth 変数から取得し、それを使用して、ユーザーがアクセス可能なデータを制御できます。

既存のユーザー アカウントに認証プロバイダの認証情報をリンクすることで、ユーザーは複数の認証プロバイダを使用してアプリにログインできるようになります。

ユーザーのログアウトを行うには、signOut() を呼び出します。

await FirebaseAuth.instance.signOut();