signInForDebug method

Future<FirebaseUser> signInForDebug ()

開発環境専用の sign in ロジック

デバッグ実行のたびに匿名アカウントが作られるのが煩わしいので、Email + Password 認証を行う. Email, Password の設定が不適切な場合は、通常通り匿名認証を行う

Implementation

Future<FirebaseUser> signInForDebug() async {
  final env = DotEnv().env;
  final email = env['EMAIL'] ?? '';
  final pass = env['PASS'] ?? '';
  if (email.isEmpty || pass.isEmpty) return null;
  FirebaseUser user;
  try {
    user = await createUserWithEmailAndPassword(email: email, password: pass);
    // ignore: avoid_catches_without_on_clauses
  } catch (e) {
    // See: https://github.com/FirebaseExtended/flutterfire/pull/1698
    // 上記 issue にあるように、現状 Error を広く拾って強引に解釈する他ない
    final code = e.code as String;
    if (code == 'auth/email-already-in-use') {
      user = await signInWithEmailAndPassword(email: email, password: pass);
    }
  }
  return user ?? await signInAnonymously();
}