콘텐츠로 건너뛰기
리뷰나라
  • JAVASCRIPT
  • JAVA
  • PYTHON
  • C#
  • Android
  • Html

[firebase] Flutter 및 google_sign_in 플러그인 : PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException : 10 :, null)

Program / 글쓴이 어드민

자격 증명에 대한 대화 상자 (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.keystoreFirebase의 앱 내에을 생성 하고 등록 하여 해결했습니다 . 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 계정으로 로그인해야합니다.

  1. Firebase 프로젝트 선택
  2. Android 선택
  3. Flutter 프로젝트 내에서 터미널 열기
  4. cd android
  5. ./gradlew signingReport 또는 gradlew signingReport
  6. 패키지 이름과 SHA1 키를 붙여 넣습니다.
  7. 클라이언트 정보 다운로드
  8. 다운로드 및 교체 google-services.json
  9. flutter clean

IOS :

  1. Firebase 프로젝트 선택
  2. IOS 선택
  3. 번들 ID를 입력하세요.
  4. credetials 다운로드
  5. 다운로드 및 교체 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/ 에서 앱을 인증합니다.


답변

저에게는 SHA를 추가 할 필요가 없었고 Firebase 콘솔 의 인증 탭에서 Google 로그인 방법 을 활성화하지 않았다는 것을 깨달았습니다.

Firebase 콘솔에서 Google 로그인 방법 사용


답변

google_sign_in이 작동하기 위해 수행해야 할 추가 단계 :

  • Firebase와 GooglePlay 연결 [( https://github.com/flutter/flutter/issues/27599 )

] [2]

  • 디버그 중에는 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.**




글 탐색

← 이전 글
다음 글 →

최신 글

  • [java] .pem 파일을 읽고 개인 및 공개 키를 얻는 방법
  • [javascript] 페이지의 모든 AJAX 요청에 “후크”추가
  • [android] ListView가 접히지 않고 어떻게 ScrollView에 넣을 수 있습니까?
  • [linux] Apache 서버의 루트 디렉토리를 어떻게 변경합니까? [닫은]
  • [ios] Swift에서 Int를 Hex String으로 변환하는 방법
  • [python] 등급 시스템 기능에서 반복적 인 if-elif 문을 어떻게 단순화 할 수 있습니까?
  • [c#] C #에서 스택 오버플로 예외 포착
  • [windows] Windows의 /usr/local/ssl/openssl.cnf에서 구성 정보를로드 할 수 없습니다
  • [twitter-bootstrap] Bootstrap을 사용하여 모바일에 테이블을 표시하는 방법은 무엇입니까?
  • [windows] BATCH 스크립트에서 무작위로 사용하는 방법은 무엇입니까?

카테고리

태그

.net android angular angularjs arrays asp.net asp.net-mvc bash c c# css database django docker html ios iphone java javascript jquery json linux macos mysql node.js objective-c pandas php postgresql python r reactjs regex ruby ruby-on-rails shell sql sql-server string swift typescript unix visual-studio windows xcode
Copyright © daplus.net - Powered by Naya