hamburger-tech-nits

主にプログラミングのNITSな話

Flutterアプリでfirebase_ui_authを使ってGoogleログインを実装する

この記事の続き

hamburger-tech.hatenablog.com

参照先のページに別のページのリンクが書いてあり、少し紛らわしかった。ようやく一段落。


pub.dev

github.com

Googleログインを有効にする

メールログインと同様にGoogleログインを有効にする。その後、必要に応じて設定値を変更して確定する。Webのシークレットは実装時に利用する。

コンソール上でGoogleログインを設定する

公式ドキュメントの画像のスクショ

AndroidアプリのSHA1をFirebaseに登録する

SHA1の確認方法はこちらのページを参考にする。

developers.google.com

SHA1とSHA256の2つを取得できるが、登録するのはSHA1。SHA256の方が安全そうという謎の理由でSHA256を登録していて、それが原因で謎のエラーに悩んだりした。

コード周り

メールログインのときはSignInScreenにproviderを引数に設定していたが、それをやめてアプリ起動時にFirebaseUIAuth.configureProvidersを呼び出すようにした。

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  FirebaseUIAuth.configureProviders(
    [
      EmailAuthProvider(),
      GoogleProvider(
        clientId: "${WebのクライアントID}",
      ),
    ],
  );
  runApp(const MyApp());
}

SignInScreen自体は以前の実装とさほど変わらず。

// MaterialAppの引数などに設定する
       SignInScreen(
        actions: [
          AuthStateChangeAction<SignedIn>(
            (context, state) {
            },
          ),
          VerifyPhoneAction(
            (context, _) {
            },
          ),
          AuthStateChangeAction<UserCreated>(
            (context, state) {
            },
          ),
          AuthStateChangeAction<CredentialLinked>(
            (context, state) {
            },
          ),
          AuthStateChangeAction<MFARequired>(
            (context, state) async {
            },
          ),
        ],
      ),

以前と比較して、Googleログインボタンが表示されるようになった