LoginSignup
10
7

More than 3 years have passed since last update.

FlutterでGoogle SignInにハマる

Last updated at Posted at 2019-05-20

とてもハマってしまったため、書いておきます。

ハマったところ

FlutterでFirebaseのGoogle SignInを実装しようとして、次の2つでハマりました。

  1. AndroidX
  2. サポートメールの設定

AndroidX

実装後、ビルドが通らなくなりました。
supportライブラリにビルドエラーが出ていました。

いろいろ調べたところ、どうやらパッケージがAndroidXに切り替わったタイミングがあるらしく、その依存関係の問題でした。

AndroidXを使わないバージョンの指定方法も上の記事には書いてあったのですが、あとあと面倒になるので、AndroidXに対応するよう修正しました。

サポートメールの設定

ビルドが通るようになって、Googleのサインイン画面でサインインボタンを押すところまでできるようになったのですが、ボタンを押すと、signIn()で以下のExceptionが発生しました。

PlatformException (PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 12500: , null))

stackoverflowにはいろいろな解決策が提示されていて、だいたいは、SHA1のキーをFirebaseに設定すればいいんだよ、というものでしたが、どれもダメでした。
探しまくったところ、以下の質問の回答に今回の解決策がありました。

Finally I found that Forgot to set support e-mail address in Google Developers Console > API and service > certificate > user consent screen link and this option also in your Firebase project setting .After set up everything should work.Hope this will help you.

原因は、Firebaseプロジェクトのサポートメールを設定していなかったためでした。

image.png

これを設定したところ、無事、サインインできるようになりました。

分かった後でググってみると、きちんと書いてある記事もありました。
https://dev.classmethod.jp/smartphone/flutter_firebase-authentication1/

対応コード

signInWithGoogleはもうありません

*.dart
    FirebaseUser user = await _auth.signInWithCredential(
        GoogleAuthProvider.getCredential(
            accessToken: googleAuth.accessToken, idToken: googleAuth.idToken));

AndroidX対応いろいろ

pubspec.yml
  firebase_core: ^0.4.0+1
  firebase_auth: ^0.11.1
  google_sign_in: ^4.0.1+3
android/build.gradle
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.google.gms:google-services:4.2.0'
    }
android/app/build.gradle
android {
    compileSdkVersion 28
    ...
    defaultConfig {
        ...
        minSdkVersion 21
        targetSdkVersion 28
        ...
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
...
dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.firebase:firebase-core:16.0.9'
}

apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin
android/gradle.properties
android.enableJetifier=true
android.useAndroidX=true

その他

Google SignInのための設定。

Firebase Consoleでの作業

プロジェクトの設定で、マイアプリを作成する。
flutterプロジェクトのSHA証明書フィンガープリントを設定する。(Android Studioで確認できる)
google-services.jsonをダウンロードして、android/appに置く。

Authenticationのログイン方法で、Googleを有効にする。
Androidの場合は、他の設定は不要。

Google Developer Consoleでの作業

OAuth 同意画面を設定する

おしまい。

10
7
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
10
7