Breaking News

Default Placeholder Default Placeholder

はじめに

アプリ開発でログイン機能を作りたいけど、アプリの初回起動時にログイン情報の入力を求めると使ってくれるユーザが減るのではないかと不安に思っている開発者も多いと思います。

そんな時はFirebaseの匿名ログイン機能が使えます。ユーザは何も入力せずに匿名でログインできる、という機能です。

この記事ではFlutterでFirebaseの匿名ログインを行うための実装方法をまとめます。

環境

  • MacOS BigSur 11.4
  • Flutter 2.5.2
  • Dart 2.14.3
  • firebase_core 1.7.0
  • firebase_auth 3.1.3

前提

  • Flutter製アプリのソースコードがある
  • Firebaseでプロジェクトを作成済み
  • Flutter製アプリとFirebaseの疎通はできている状態

やることリスト

  • ライブラリインストール
  • Firebaseで匿名ログインを有効にする
  • ソースコード修正

ライブラリインストール

firebase_authをインストールします

$ flutter pub add firebase_auth

Firebaseで匿名ログインを有効にする

Firebaseのコンソールの左ペインの Authenticationをクリックします

始めるボタンをクリックします

リストの中の 匿名をクリックします

有効にして保存して完了です

これでFirebase側の設定は完了しました。

ソースコード修正

アプリを開いたときに匿名ログイン処理が走って欲しいのでmain.dartを修正していきます。

Future main() async {                                                 // awaitを使うため、Future、asyncにする
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await _initializeFirebaseAuth();                                // Firebaseのinitializeが終わってから匿名ログイン処理のメソッドを実行する
  runApp(
    MyApp()
  );
}

Future<void> _initializeFirebaseAuth() async {
  await Firebase.initializeApp();
  final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  User? user = _firebaseAuth.currentUser;
  if (user == null) {
    // Firebase上にユーザがまだ作成されていない場合に匿名ログイン処理を実行する(すでに作成されている場合は新たにユーザ作成はしない))
    await _firebaseAuth.signInAnonymously();              
  }
}

class MyApp extends StatelessWidget {

...
...
...

確認

この状態でアプリを起動してみてください。

Firebase上で以下のようになっていれば成功です

(画像のユーザは僕の開発ユーザです。でも念の為uuidは隠させていただきます)