こんにちは、株式会社Pentagonでエンジニアをしているtsurumiです。
目次
この記事の内容
FlutterでFirebase Authの匿名認証を実装する機会があったので、その方法をまとめた記事になります。
匿名認証とは?
Firebase で認証する一時的な匿名アカウントを、Firebase Authentication で作成して使用できます。一時的な匿名アカウントを使用すると、アプリに登録していないユーザーが、セキュリティ ルールで保護されているデータを使用できるようになります。匿名ユーザーがアプリに登録する場合は、ログイン認証情報を匿名アカウントにリンクすると、それ以後のセッションでも引き続き、保護されているデータを使用できます。
と公式では書かれています。
簡単にいうと、アカウント登録・ログインをしなくてもFirestoreにアクセスできちゃう仕組みです。
実装方法
import 'package:firebase_auth/firebase_auth.dart';
class AuthService {
final _auth = FirebaseAuth.instance;
// ①ログインしてるかチェック
bool get isLoggedIn => _auth.currentUser != null;
// ②匿名認証
Future<UserCredential> signInWithAnonymously() => _auth.signInAnonymously();
// ログアウト
Future<void> signOut() async {
await _auth.signOut();
}
// ユーザー削除
Future<void> userDelete(User user) async {
await user.delete();
}
}
- まず、アプリ立ち上げ時にログインしているかのチェックを行う(①の関数)
- ログインしていない場合は匿名認証の関数を呼び出す(②の関数)
- FirebaseのダッシュボードのAuthenticationを確認してみるとuserが増えていることが確認できたらOKです。
注意点
- この匿名認証は一度ログアウトして再度、匿名認証を行うと違うUIDでユーザーが作成されます。ログアウトする際にはユーザー削除することを忘れないようにしましょう。ユーザー削除をせずログアウトだけしてるとユーザーがとんでもなく増えてしまいます.....