Flutter+Firebase+AndroidでGoogle Sign Inを実装したい。

11:55
Firebaseの手順に沿って実装した。iOSではログインできるようになったが、Androidだと、以下で止まってしまう。

final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

Googleでサインインするモーダルが出てくるが、サインインしても何も起こらない。コンソールには謎のメッセージが表示される。

I/ViewRootImpl@c56a993[MainActivity]( 2360): stopped(false) old=false
E/flutter ( 2360): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
E/flutter ( 2360): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
E/flutter ( 2360): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:177:18)
E/flutter ( 2360): <asynchronous suspension>
E/flutter ( 2360): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:377:43)
E/flutter ( 2360): <asynchronous suspension>
E/flutter ( 2360): #3      GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:247:30)
E/flutter ( 2360): <asynchronous suspension>
E/flutter ( 2360): #4      GoogleSignIn.signIn.isCanceled (package:google_sign_in/google_sign_in.dart:377:5)
E/flutter ( 2360): <asynchronous suspension>
E/flutter ( 2360): 
I/ViewRootImpl@1c56a3e[SignInHubActivity]( 2360): stopped(true) old=false
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665764938656]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665764938656]
I/ViewRootImpl@1c56a3e[SignInHubActivity]( 2360): dispatchDetachedFromWindow
D/InputTransport( 2360): Input channel destroyed: 'fe1f055', fd=143
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665592220032]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665592220032]
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665592220128]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665592220128]
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665592224256]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665592224256]
I/SurfaceControl( 2360): assignNativeObject: nativeObject = 0 Surface(name=null)/@0x60fa665 / android.view.SurfaceControl.readFromParcel:1117 android.view.IWindowSession$Stub$Proxy.relayout:1836 android.view.ViewRootImpl.relayoutWindow:9005 android.view.ViewRootImpl.performTraversals:3360 android.view.ViewRootImpl.doTraversal:2618 android.view.ViewRootImpl$TraversalRunnable.run:9971 android.view.Choreographer$CallbackRecord.run:1010 android.view.Choreographer.doCallbacks:809 android.view.Choreographer.doFrame:744 android.view.Choreographer$FrameDisplayEventReceiver.run:995 
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665799588704]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665799588704]
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665799588992]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665799588992]
I/ViewRootImpl@c56a993[MainActivity]( 2360): Relayout returned: old=(0,0,720,1600) new=(0,0,720,1600) req=(720,1600)0 dur=6 res=0x1 s={true -5476376668094124032} ch=false fn=40
I/ViewRootImpl@c56a993[MainActivity]( 2360): updateBoundsLayer: shouldReparent = false t = android.view.SurfaceControl$Transaction@ca60d49 sc = Surface(name=Bounds for - com.glogal.sflo/com.example.sflo.MainActivity@0)/@0xa36164e frame = 40
I/ViewRootImpl@c56a993[MainActivity]( 2360): MSG_WINDOW_FOCUS_CHANGED 1 1
D/InputMethodManager( 2360): prepareNavigationBarInfo() DecorView@7d1c102[MainActivity]
D/InputMethodManager( 2360): getNavigationBarColor() -16711423
D/InputMethodManager( 2360): prepareNavigationBarInfo() DecorView@7d1c102[MainActivity]
D/InputMethodManager( 2360): getNavigationBarColor() -16711423
V/InputMethodManager( 2360): Starting input: tba=com.glogal.sflo ic=null mNaviBarColor -16711423 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager( 2360): startInputInner - Id : 0
I/InputMethodManager( 2360): startInputInner - mService.startInputOrWindowGainedFocus
D/InputTransport( 2360): Input channel constructed: 'ClientS', fd=143
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665592220032]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665592220032]
I/SurfaceControl( 2360): nativeRelease nativeObject s[-5476376665592224256]
I/SurfaceControl( 2360): nativeRelease nativeObject e[-5476376665592224256]

どうやら、
Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
と言われている。

SHAフィンガープリントがないとだめだと言われてるが、ある。新しいgoogle-services.jsonもダウンロードしてandroid/app/内に入れた。

Google Play ConsoleにもSHAフィンガープリントがあるし、MacのTerminalでも作れる。どっち使えばいいんだ。
どっちも試してみたけど同じエラー。

12:40

休憩…

15:41

KylianMbappeの回答を試してみた。
できない。
よく見てみたら、何種類もSHAフィンガープリントが出てきてた。

...多すぎて切れてる...

SHA-256: ...
Valid until: 2052411日木曜日
----------

> Task :cloud_firestore:signingReport
Variant: debugAndroidTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052411日木曜日
----------
Variant: debugUnitTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052411日木曜日
----------
Variant: releaseUnitTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052411日木曜日
----------
Variant: profileUnitTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052411日木曜日
----------

> Task :firebase_analytics:signingReport
...
----------

> Task :firebase_auth:signingReport
...
----------

> Task :firebase_core:signingReport
...
----------

> Task :firebase_crashlytics:signingReport
...
----------

> Task :firebase_dynamic_links:signingReport
...
----------

> Task :firebase_messaging:signingReport
...
----------

> Task :firebase_storage:signingReport
...
----------

> Task :flutter_app_badger:signingReport
...
----------

> Task :flutter_image_compress:signingReport
...
----------

> Task :flutter_local_notifications:signingReport
...
----------

> Task :flutter_native_splash:signingReport
...
----------

> Task :flutter_plugin_android_lifecycle:signingReport
...
----------

> Task :geocoding:signingReport
...
----------

> Task :geolocator_android:signingReport
...
----------

> Task :google_sign_in_android:signingReport
...
----------

> Task :image_picker_android:signingReport
...
----------

> Task :location:signingReport
...
----------

> Task :path_provider_android:signingReport
...
----------

> Task :permission_handler_android:signingReport
...
----------

> Task :qr_code_scanner:signingReport
...
----------

> Task :share_plus:signingReport
...
----------

> Task :shared_preferences_android:signingReport
...
----------

> Task :sign_in_with_apple:signingReport
...
----------

> Task :sqflite:signingReport
...
----------

> Task :stripe_android:signingReport
...
----------

> Task :url_launcher_android:signingReport
...
----------

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.7/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 12s
28 actionable tasks: 28 executed

一番それっぽい以下のSHAで試してみる。

> Task :google_sign_in_android:signingReport
Variant: debugAndroidTest

ダメ。😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭
以下で試してみる。

> Task :firebase_auth:signingReport
Variant: debugAndroidTest

ダメ😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭

関係ないと思うけど以下のメッセージが気になったので、

Deprecated Gradle features were used in this build, 

cd android && ./gradlew clean && ./gradlew :app:bundleReleaseやってみたけど同じエラー。

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.

Flutter使っててよく思うんだけど、もっとわかりやすいエラー出してよ!!!!

UnknownError多すぎだよ!!!

GradleのWarningは無視して再度flutter runしてみると。。。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name <bundleID>

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 50s

ああああああああああああああああああああああああ。新しいエラぁぁぁぁぁぁぁぁぁあ。

16:29

build.gradleファイルのdefaultConfigのapplicationIdが他と違っていた。正しいapplicationIdに変更すると。。。

ビルドできた!!!Sign Up With Googleもできた!!!!!!
わーーーーーい🎉🎉
いつも地味なミスで時間をとっている。どうにかしたい。

あとがき

今日なにも進んでない。

書いたのを見返すと「結構すぐ解決してるじゃん」と見えるけど、気分的には永遠だった。

この記事が気に入ったらサポートをしてみませんか?