#はじめに
Flutter
でFirebaseAuth
を使ってユーザ認証を行うとき、自分が行っているエラーハンドリングについて解説します。
#環境
- Flutter : 1.20.1
- firebase_auth : 0.18.0+1
#コード
import 'package:firebase_auth/firebase_auth.dart';
class Auth {
final _firebaseAuth = FirebaseAuth.instance;
Future<String> createUser(String email, String password) async {
try {
final result = await _firebaseAuth.createUserWithEmailAndPassword(
email: email,
password: password,
);
return result.user.uid;
} catch (error) {
if (error.toString() ==
'[firebase_auth/invalid-email] The email address is badly formatted.') {
return 'error:email';
}
if (error.toString() ==
'[firebase_auth/email-already-in-use] The email address is already in use by another account.') {
return 'error:exist';
}
print(error);
return 'error:unknown';
}
}
Future<String> signIn(String email, String password) async {
try {
final result = await _firebaseAuth.signInWithEmailAndPassword(
email: email,
password: password,
);
return result.user.uid;
} catch (error) {
print(error);
if (error.toString() ==
'[firebase_auth/user-not-found] There is no user record corresponding to this identifier. The user may have been deleted.' ||
error.toString() ==
'[firebase_auth/invalid-email] The email address is badly formatted.') {
return 'error:email';
}
if (error.toString() ==
'[firebase_auth/wrong-password] The password is invalid or the user does not have a password.') {
return 'error:password';
}
return 'error:unknown';
}
}
Future<void> signOut() async {
return _firebaseAuth.signOut();
}
}
#kwsk(詳しく)
try-catch
でエラー判定を行います。
(エラー文をあらかじめ把握しておき、それに応じたエラーメッセージを返す。)
##createUserWithEmailAndPasswordの場合
###[firebase_auth/invalid-email] The email address is badly formatted.
Authに渡したメールアドレスが、メールアドレスの形をしていない場合に出るエラーです。
(例:email : aaaaa)
###[firebase_auth/email-already-in-use] The email address is already in use by another account.
メールアドレスが既に登録済みである場合に出るエラーです。
##signInWithEmailAndPasswordの場合
###[firebase_auth/user-not-found] There is no user record corresponding to this identifier. The user may have been deleted.
登録されていないメールアドレスの場合に出るエラーです。
###[firebase_auth/invalid-email] The email address is badly formatted.
Authに渡したメールアドレスが、メールアドレスの形をしていない場合に出るエラーです。
(例:email : aaaaa)
###[firebase_auth/wrong-password] The password is invalid or the user does not have a password.
入力したパスワードが、登録したものと異なる場合に出るエラーです。
#ユーザーへのエラー表示
上の関数で返した値を判定して、関数終了時にDialog
で認証が成功したか失敗したかを表示しています。
エラー文のcaseをいくつか持っているので、返却値がerror:unknown
でない場合は理由も表示しています。
#おわり
FirebaseAuthを使うことでfirestoreへのユーザーデータ保存の管理がとてもやりやすくなるのでオススメです。(uidを取得してcollection名にするなど)
おわります。