【Firebase】 カスタム認証を使ってユーザー登録をする

image

Flutterのアプリ開発で実装したことをブログにしました。誰かのお役に立てれば幸いです。
Firebase側がデフォルトで用意していない認証方法でユーザー登録をする際には、 カスタム認証をすることで、メールアドレス認証などと同じように、 Firebaseでユーザー管理ができるようになります。

カスタム認証の流れについて

認証に何を使うかによって、違うところもあるとは思いますが、
大まかな流れとしては、認証側からuserIdを取得、CloudFunctionsを利用して、 Firebase用のカスタムトークンを取得、カスタムトークンを利用して、 FirebaseAuthでログインする流れになります。

CloudFunctionsでカスタムトークンを取得する

カスタムトークンを作成するため、CloudFunctionsのメソッドを作成します。

また、下の参考コードの場合、サービスアカウントで事前にイニシャライズして、

管理者権限のあるauthを取得しています。

import * as functions from "firebase-functions";
import { auth } from "../firebase";

export const fetchCustomToken = functions
  .region("asia-northeast1")
  .https.onRequest(async (request, response) => {
    const acountId = request.body.data.accountId;

    if (typeof acountId !== "string") {
      console.log("acountId is not string");
      response.status(404).send({
        data: "error : acountId is not string",
      });
      return;
    }

    const customToken = await auth.createCustomToken(acountId);
    response.status(200).send({
      data: { customToken: customToken },
    });
  });

このコードをアプリ側から呼び出します。

    final callable = FirebaseFunctions.instanceFor(region: 'asia-northeast1')
        .httpsCallable('fetchCustomToken');  
    final response = await callable.call({
      'accountId': accountId,  // ここで別の認証から取得したIDを渡す
    });

これで返ってきたresponseからカスタムトークンを取得できます。

Firebase Authのカスタム認証する

あとは、カスタムトークンを使って、signInWithCustomTokenすれば、

Firebaseのカスタム認証ができます。

  final _auth = auth.FirebaseAuth.instance;
  final customToken = response.data['customToken'];
  final userCredential =
      await _auth.signInWithCustomToken(customToken);


<参考にしたサイト>

https://zenn.dev/yskuue/articles/410e5b787b354a


お知らせ

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日にアプリ開発講座を開催します!会場は岐阜県美濃加茂市のコワーキングスペース「こやぁね」です。興味のある方は是非ご参加ください!

Read More
可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。

Read More

お知らせ

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日にアプリ開発講座を開催します!会場は岐阜県美濃加茂市のコワーキングスペース「こやぁね」です。興味のある方は是非ご参加ください!

Read More
可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。

Read More