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: 2052年4月11日木曜日
----------
> Task :cloud_firestore:signingReport
Variant: debugAndroidTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052年4月11日木曜日
----------
Variant: debugUnitTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052年4月11日木曜日
----------
Variant: releaseUnitTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052年4月11日木曜日
----------
Variant: profileUnitTest
Config: debug
Store: /Users/tenna/.android/debug.keystore
Alias: AndroidDebugKey
MD5: ...
SHA1: ...
SHA-256: ...
Valid until: 2052年4月11日木曜日
----------
> 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もできた!!!!!!
わーーーーーい🎉🎉
いつも地味なミスで時間をとっている。どうにかしたい。
あとがき
今日なにも進んでない。
書いたのを見返すと「結構すぐ解決してるじゃん」と見えるけど、気分的には永遠だった。
この記事が気に入ったらサポートをしてみませんか?