자격 증명에 대한 대화 상자 (Google 양식)가 성공적으로 열리지 만 자격 증명을 채운 후에이 오류가 발생합니다. 나는 여기 에서 지시를 따랐다 . Firebase 프로젝트를 만들고 Google API 콘솔에서 Google Drive API를 활성화했습니다 (지금은 필요합니다).
예외를 던지는 코드 :
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
이것이 스택 추적입니다.
E/flutter ( 5068): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 5068): PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter ( 5068): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:551:7)
E/flutter ( 5068): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:292:18)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #2 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:226:58)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #3 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:268:20)
E/flutter ( 5068): #4 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:339:48)
E/flutter ( 5068): #5 ThatsMyComponentState.theSignInFuction.<anonymous closure> (package:my_app/widgets/my_file.dart:666:45)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #6 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
E/flutter ( 5068): #7 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
E/flutter ( 5068): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter ( 5068): #9 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
E/flutter ( 5068): #10 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
E/flutter ( 5068): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter ( 5068): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:184:20)
E/flutter ( 5068): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
E/flutter ( 5068): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
E/flutter ( 5068): #15 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
E/flutter ( 5068): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
E/flutter ( 5068): #17 _invoke1 (dart:ui/hooks.dart:168:13)
E/flutter ( 5068): #18 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
google_sign_in 플러그인 의 버전 은 4.0.0입니다.
이것이 flutter doctot -v 의 출력입니다 .
[√] Flutter (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17763.253], locale en-US)
• Flutter version 1.0.0 at C:\src\flutter-0.7.3\flutter
• Framework revision 5391447fae (10 weeks ago), 2018-11-29 19:41:26 -0800
• Engine revision 7375a0f414
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)
[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at C:\Users\myuser\AppData\Local\Android\Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = C:\Users\myuser\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.3)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 32.0.1
• Dart plugin version 182.5124
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
[!] IntelliJ IDEA Community Edition (version 2018.1)
• IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1.6
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.io/intellij-setup/#installing-the-plugins
[!] VS Code, 64-bit edition (version 1.30.2)
• VS Code at C:\Program Files\Microsoft VS Code
• Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator)
! Doctor found issues in 2 categories.
어떤 도움이라도 대단히 감사하겠습니다. 감사!
답변
방금 같은 문제가 발생합니다. 이것은 디버그에서 실행 중이고 firebase에 지문을 등록 하지 않은 경우 발생할 수 있습니다 SHA
. debug.keystore
Firebase의 앱 내에을 생성 하고 등록 하여 해결했습니다 . google-services.json
그 후에 새로운 것을 다운로드하는 것을 잊지 마십시오 . 참조 이 .
편집
릴리스 모드에서 인증을 사용할 수없는 경우 다음을 시도하십시오.
-릴리스 키의 SHA 인증서 지문을 추가합니다.
keytool -exportcert -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>
이에 대한 자세한 내용은 https://developers.google.com/android/guides/client-auth 섹션을 "get release certificate"
참조하십시오.
인증이 여전히 작동하지 않는다면 Playstore에서 앱을 다운로드하고 “Google Play 기능으로 앱 서명” 을 활성화했기 때문일 수 있습니다.
그런 다음이 경우 Play 스토어 게시 콘솔로 이동하여 릴리스 관리에서 앱 서명으로 이동합니다. Firebase 콘솔에 등록 할 SHA 인증서 지문을 찾을 수 있습니다.
답변
다음 솔루션은 flutter 프로젝트에서 작동합니다.
1 단계 : SHA1 및 SHA256 키를 생성 합니다.
2 단계 : SHA1과 SHA256을 모두 firebase에 추가합니다. (앱 설정에서)
3 단계 : google-services.json 을 프로젝트 폴더의 android / app 에 다운로드 합니다.
4 단계 : 터미널에서 명령을 실행합니다 flutter clean
.
5 단계 : Flutter 앱을 실행합니다.
자세한 내용은
https://developers.google.com/android/guides/client-auth https://firebase.google.com/docs/flutter/setup을 방문하십시오.
답변
답변
패키지로 Google Cloud Api 프로젝트를 구성해야합니다.
https://developers.google.com/identity/sign-in/android/start-integrating#configure_a_project
동일한 Firebase 계정으로 로그인해야합니다.
- Firebase 프로젝트 선택
- Android 선택
- Flutter 프로젝트 내에서 터미널 열기
cd android
./gradlew signingReport
또는gradlew signingReport
- 패키지 이름과 SHA1 키를 붙여 넣습니다.
- 클라이언트 정보 다운로드
- 다운로드 및 교체
google-services.json
flutter clean
IOS :
- Firebase 프로젝트 선택
- IOS 선택
- 번들 ID를 입력하세요.
- credetials 다운로드
- 다운로드 및 교체
GoogleService-info.plist
답변
나는 이것을 고치려고 오랜 세월을 보냈다.
1. grade.properties 열기이 파일은 {{YOUR PROJECT}} / android / gradle.properties 아래에 있습니다.
2. 스크린 샷에 표시된대로 ‘org.gradle.jvmargs’에 다음 인수를 추가합니다.
-XX : MaxHeapSize = 256m -Xmx256m
3. ‘gradlew’를 마우스 오른쪽 버튼으로 클릭하고 ‘터미널에서 열기’로 이동합니다.
이 파일은 {{YOUR PROJECT}} / android / gradlew에 있습니다.
4. 다음 명령을 입력합니다.
gradlew signingReport
작동하지 않으면 먼저 두 번째 명령을 시도하십시오.
./gradlew signingReport
5. 컴파일이 완료 될 때까지 기다리면 SHA 키가 인쇄됩니다.
이 키를 사용하여 https://console.firebase.google.com/ 에서 앱을 인증합니다.
답변
답변
google_sign_in이 작동하기 위해 수행해야 할 추가 단계 :
- Firebase와 GooglePlay 연결 [( https://github.com/flutter/flutter/issues/27599 )
- 디버그 중에는 Google 로그인을 실행할 수 있지만 릴리스에서는 실행할 수없는 경우 릴리스 키의 SHA1 및 SHA256을 firebase에 추가하지 않았을 가능성이 높습니다. 릴리스 키의 SHA를 얻으려면 다음을 사용하십시오.
keytool -list -v -keystore ~/key.jks -alias key
디버그 키의 2 개, Google Play 링크의 2 개, 릴리스 키의 2 개 등
총 6 개 이상의 SHA 자격 증명이 있어야 합니다. 출시 SHA 사용자 인증 정보를 firebase에 추가 한 후 google-services.json 파일을 다시 다운로드 할 필요가 없습니다.
- GooglePlay Proguard 규칙 추가 (https://github.com/flutter/flutter/issues/19102)
# Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
# GooglePlay Services
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class com.google.common.** { *; }
-dontwarn com.google.common.**