はじめに
アプリ開発でログイン機能を作りたいけど、アプリの初回起動時にログイン情報の入力を求めると使ってくれるユーザが減るのではないかと不安に思っている開発者も多いと思います。
そんな時は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
は隠させていただきます)
