1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

flutter+firebaseでユーザ認証を実装したときの備忘

Last updated at Posted at 2020-10-11

:book: Flutterの記事を整理し本にしました :book:

  • 本稿の記事を含む様々な記事を体系的に整理し本にまとめました
  • 今後はこちらを最新化するため、最新情報はこちらをご確認くださ
  • 10万文字を超える超大作になっています(笑)

はじめに

  • flutterのandroidアプリに認証機能を作りたくなったので、firebaseを使って実装しました
  • 今回は一番シンプルなEmail/Passwordによる認証だけです
  • Androidだけを対象にしており、iOSは省略しています
    • GoogleAuthはフィンガープリントだけで比較的実装しやすいようですが、その他(Twitterなど)はAPIを払い出すなどが先に必要です。

手順

Firebase側

  • Firebaseでプロジェクトを作成する
  • androidのアイコンをクリックし、アプリ登録をする
    • IDはandroid/app/build.gradleにあるdefaultConfig内にあるapplicationIDを使う
  • google-services.jsonをandroid/appにコピーする
  • Authentication → Sign-inmethod →メール/パスワードを有効にする

Flutter側

  • 依存関係に以下を追加
    • firebase_core: ^0.5.0
    • firebase_auth: ^0.18.0
  • トップレベルの方のbuild.gradleのdependenciesに以下を追加
    • classpath 'com.google.gms:google-services:4.2.0'
  • appの下のbuild.gradleのdependenciesに以下を追加
    • apply plugin: 'com.google.gms.google-services'
sample.dart
testEmailAuth() async {
    await Firebase.initializeApp();
    // 登録
    try {
      //1回目はOK.2回目以降は重複エラー
      final User user =
          (await FirebaseAuth.instance.createUserWithEmailAndPassword(
        email: "test1@email.com",
        password: "password",
      ))
              .user;
      print("登録OK ${user.uid}");
    } catch (e) {
      print("登録NG $e");
    }
    // 認証
    try {
      //登録済のためOK
      final User user = (await FirebaseAuth.instance.signInWithEmailAndPassword(
        email: "test1@email.com",
        password: "password",
      ))
          .user;
      print("登録OK ${user.uid}");
    } catch (e) {
      print("登録NG $e");
    }
    try {
      //登録していないためNG
      final User user = (await FirebaseAuth.instance.signInWithEmailAndPassword(
        email: "test2@email.com",
        password: "password",
      ))
          .user;
      print("登録OK ${user.uid}");
    } catch (e) {
      print("登録NG $e");
    }
  }
  • ユーザtest1の登録(登録がないときは成功、登録済のときは失敗を期待)
  • ユーザtest1の認証(成功を期待)
  • ユーザtest2の認証(失敗を期待)

pic1.png

参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?