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


100

자격 증명에 대한 대화 상자 (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.

어떤 도움이라도 대단히 감사하겠습니다. 감사!


모두에게 : 예외 코드에주의를 기울이고 ApiException: 10먼저 문서를 참조하세요.- developers.google.com/ android/reference/com/google/android/gms/… 올바른 문제를 수정하고 있는지 확인하세요. 예를 들어 코드 7은 '인터넷 연결 없음'을 의미합니다.
Kirill Karmazin

./gradlew signingReport를 실행하면 앱 Android 폴더 아래에 있습니다. Google Firebase Google 로그인 구성에 SHA1을 추가합니다. developers.google.com/android/guides/client-auth . 작업하는 각 컴퓨터에 SHA1이 필요합니다.
live-love

@KirillKarmazin 12500이 뭔지 아세요? E / flutter (23795) : [ERROR : flutter / lib / ui / ui_dart_state.cc (157)] 처리되지 않은 예외 : PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException : 12500 :, null)
raiton

답변:


155

방금 같은 문제가 발생합니다. 이것은 디버그에서 실행 중이고 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 인증서 지문을 찾을 수 있습니다.

여기에 이미지 설명 입력


19
감사합니다. 이것은 도움이되었습니다. 인증이 작동하려면 SHA1 및 SHA256 키가 모두 추가되어야한다는 점에 주목할 가치가 있습니다.
Srini

2
이것을 대답으로 받아들이십시오.
Muruganandham K

@TSR이 작동했지만 새로운 google-services.json을 다운로드 할 필요가 없었습니다.
Darren Cole

2
참고로, sha 지문을 구성한 후에도 동일한 오류가 발생했습니다. 또한 github.com/flutter/flutter/issues/25909#issuecomment-497378619 당 지원 이메일 주소를 추가해야했습니다 .
마이클 넬슨

이 역시 내 문제였다 @MichaelNelson
토비아스

44

다음 솔루션은 flutter 프로젝트에서 작동합니다.

1 단계 : SHA1SHA256 키를 생성 합니다.
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을 방문하십시오.


10
청소는 매우 중요합니다
mkkhedawat

29

이 문제를 발견했을 때이 게시물에 설명 된 다른 모든 솔루션을 시도했습니다. 이들 중 어느 것도 작동하지 않았습니다. 결국 나는 그것을 알아 냈다. 내 상황에서 나는 내 "지원 이메일"을 설정해야했다.

공개 설정 지원 이메일


이것은 나를 위해 일했습니다.
dvallejo

27

패키지로 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

2
gradlew signingReport는 처음에는 잘못된 키 저장소를 사용하기 때문에 많은 도움이됩니다. 그리고 그 명령으로 당신은 확실히 올바른 것을 얻습니다.
BHuelse

25

나는 이것을 고치려고 오랜 세월을 보냈다.

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/ 에서 앱을 인증합니다.


1
나를 위해, SHA-1 / SHA-256 작동하지 생성 된 내 키 도구 일 수있는 유일한 일이
PRO GRAMMER

4
4 단계가 작동하지 않으면 대신 다음과 같이 gradlew를 호출합니다. ./gradlew signingReport
Tincho825

1
이것은 또한 나를 위해 일한 유일한 것입니다. 다른 모든 것을 시도하고 이것을 찾기 전에 문제를 해결하기 위해 며칠을 보냈습니다.
Mark Rawlingson

이 오류가 발생하는 경우 : org.codehaus.groovy.runtime.InvokerHelper 클래스를 초기화 할 수 없습니다
Ramis

이것이 가장 쉬운 방법입니다! 이것은 받아 들여 져야합니다.
reverie_ss 2010 년

11

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

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


7

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

] [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 파일을 다시 다운로드 할 필요가 없습니다.

중포 기지

# 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.**

7

구성 단계를 놓쳤습니다 .Firebase에서 Google 로그인을 활성화하십시오.

Google 로그인은 연결된 iOS 및 웹 앱에서 자동으로 구성됩니다. Android 앱에 Google 로그인을 설정하려면 프로젝트 설정에서 각 앱에 대해 SHA1 지문을 추가해야합니다.

아래 단계를 충분히 완료하세요

  1. 사용 구글 인증 방법
  2. 에서 현재 프로젝트의 인증서 지문 을 구성 합니다 project-level setting. 인증서 생성 방법 .
  3. 프로젝트 지원 이메일을위한 이메일 선택
  4. google-service.json프로젝트에 다운로드 하십시오.
  5. 운영 flutter clean
  6. 스타트 flutter run

영상



4

플랫폼 예외 10의 경우 다음을 시도하십시오.

  1. 컴퓨터에서 새 SHA1 지문을 생성합니다.
  2. Firebase 콘솔에서 Firebase Android 앱 설정으로 이동합니다.
  3. Android 앱 설정에서 새 지문 추가를 클릭하십시오.
  4. 새 SHA1 지문을 필드에 붙여 넣습니다.
  5. 새 json 구성 파일 생성
  6. Android 디렉토리의 구성 파일 교체
  7. 플러터 클린 실행
  8. 프로젝트 실행

3

이 오류가 발생할 수있는 한 가지 이유는 Google의 OAuth 동의 양식을 작성하지 않았기 때문입니다. Firebase의 새로운 변경 사항입니다.

앱에 대한 동의 양식을 작성하기 위해 따라야하는 단계는 다음과 같습니다.

  1. Google API 콘솔로 이동합니다 (현재 https://console.developers.google.com). )로 이동하여 Firebase 프로젝트가 생성 된 계정에 로그인했는지 확인합니다.
  2. 개발자 콘솔의 왼쪽 상단에있는 '프로젝트 선택'드롭 다운에서 프로젝트를 선택합니다.
  3. 왼쪽 창에서 "자격 증명"으로 이동 한 다음 "OAuth 동의 화면"으로 전환합니다.
  4. "응용 프로그램 이름"에 응용 프로그램의 공개 이름을 입력합니다.
  5. "애플리케이션 로고"에서 애플리케이션의 로컬 이미지 파일을 업로드합니다.
  6. '지원 이메일'아래에 Firebase 애플리케이션에 나열된 것과 동일한 지원 이메일을 입력합니다.

이제 화면이 6 단계에서이 예제와 같이 보일 것입니다.

  1. 아래로 스크롤 하여 Firebase 앱이있는 승인 된 도메인 앞에 http : // 를 추가하여 '애플리케이션 홈페이지 링크', '애플리케이션 개인 정보 보호 정책 링크'및 '애플리케이션 서비스 약관 링크' 를 작성합니다.

다음은 7 단계에서 이러한 영역을 작성하는 방법에 대한 강조된 예입니다.

  1. 저장을 클릭하십시오.

이 단계는 저에게 효과적이었습니다! 링크가 아직 존재하지 않을 수 있지만 여기 에서이 솔루션의 소스를 참조하고 싶습니다.


실제로 질문에 대한 답변입니까?
Bulat

의견을 보내 주셔서 감사합니다. 내 답변을 좀 더 구체적으로 업데이트하려고했습니다. 지금 적절한 지 알려주세요. 그렇지 않은 경우 어떻게 개선 할 수 있는지 알려주세요.
Ben Elliott

1
"확인을 위해 제출"해야합니까, 아니면 "저장"만해야합니까?
Simpler

2

이것은 어리석은 것처럼 보일 수 있지만 지금은 나에게 일어났습니다 (과거에 firebase로 작업 한 경험이 있습니다). Google 인증을 활성화하지 않은 것으로 나타났습니다. 여전히 로그인 프롬프트가 표시 될 수 있으므로 (활성화되지 않은 상태로 휴대 전화의 Google 사용자가 표시됨) 그렇게하세요.


어디에서 thant를 활성화합니까?
Ahmed Albarody

@AhmedAlbarody Firebase 콘솔에서 인증을 선택한 다음 사용하려는 서비스를 활성화해야합니다.
Guy

1

SHA-1이 시스템에서만 생성되는 디버그 키 여야하는지 확인한 다음 google-services.json 파일을 다운로드하여 프로젝트에 추가합니다.


1

추가했는지 확인하십시오

 dependencies {
    classpath 'com.google.gms:google-services:4.2.0'
}

android / build.gradle 및

apply plugin: 'com.google.gms.google-services'

에서 안드로이드 / 응용 프로그램 / build.gradle . 또한 android / app / build.gradle의 applicationIdAndroidManifest.xml 의 패키지 이름과 동일한 지 확인하십시오 (패키지 이름 을 변경 한 후 applicationId를 변경하는 것을 잊을 수 있습니다). 매니페스트 파일의이 applicatioonId 또는 패키지 이름은 Firebase 앱의 Android 패키지 이름이어야합니다.


1

사용한 각 PC에 대해 SHA-1 및 SHA-256을 생성해야합니다. 그리고 모두 firebase 프로젝트 설정에 추가하십시오.

그리고 OAuth 동의 탭 에서 양식을 작성해야합니다 .



1

그러나 위에 제공된 답변은 정확하지만 여전히 문제가있는 경우 app / build.gradle의 signingConfig {} 섹션을 확인하는 것을 잊지 마십시오. google-services.json 및 키 저장소와 불일치를 일으킬 수있는 원치 않는 키 저장소 파일 참조가 없어야합니다.


1

제 경우에는 어리석은 실수였습니다. 'com.example.appname'과 같은 firebase의 applicationId가 defaultConfig {} 아래의 app / src / build.gradle 파일의 applicationId와 정확히 일치하는지 확인하십시오. 철자 오류 없음 , 대문자, 소문자 충돌이 없습니다. 제 경우에는 한 글자가 대문자로 모든 문제를 일으켰습니다.


0

에서 안드로이드 / 응용 프로그램 / build.gradle 전에서 종속성 변경 com.android.tools.build:gradle:3.1.3 / com.google.gms : 구글 - 서비스 : 3.2.1com.android.tools.build:gradle을 : 3.2.1 / 구글-서비스 : 4.2.0 com.google.gms . 그리고 그것은 효과가있었습니다.


0

Firebase에 앱을 등록하는 동안 내 applicationId를 내 앱에 적합한 것으로 변경했습니다. 그러나 이로 인해 디버거를 실행할 때 두 번째 Flutter 앱이 내 휴대폰에 설치되었습니다 (물론 applicationId의 변경으로 인해). 제 상황에서 효과가 있었던 remove것은 설치와 re-install앱 모두 였습니다 .


0

나는 위의 모든 것을 시도했지만 아무것도 작동하지 않았습니다. 내 실수는 내 드라이브에 여러 개의 Android 스튜디오 버전 폴더가 있고 firebase 설정에서 잘못된 SHA1 키를 제공하는 것입니다.


0

Appbundle (Google Play 및 Flutter에서 권장)을 빌드하면이 오류가 발생합니다. APK를 빌드하면이 문제가 해결됩니다.

문제 58194425 참조


0

나는 문제가 있었고 그것을 해결하는 데 5 시간이 걸렸다. API 예외 10이 지문에 문제가 있음을 의미한다는 것을 읽은 것을 기억합니다. 따라서 키 저장소이거나 firebase의 잘못된 구성이어야합니다. 결국 그것은 키 저장소였습니다. 나는 이것이 왜 효과가 있었는지 여전히 잘 모르겠지만 이것이 내가 한 일입니다. 저는 Windows 10을 사용하고 있습니다.

1.) android / build.gradle 파일에 다음이 있는지 확인하십시오 .

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

2.)이 두 줄을 android / gradle.properties 파일에 추가 했습니다.

android.useAndroidX=true
android.enableJetifier=true

3.) C : \ Users \ YOURUSER \ .android로 이동 하여 다음을 삭제했습니다.

debug.keystore
debug.keystore.lock

4.) 관리자로 터미널을 열고이 디렉토리에 디버그 키 저장소를 생성했습니다.

$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000

지문 획득 :

$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android 

5.) Firebase의 구성에 SHA1 지문을 추가했습니다.

그게 내 쪽이었다. 누군가에게 도움이되기를 바랍니다.


0

Firebase 콘솔에서 사용중인 서명 인증서가 아직 개발 중일 때 app / build.gradle 파일의 signingConfigs >> 디버그 구성에서 사용되는 것과 동일한 지 확인하세요. 일치하지 않으면 오류가 발생합니다.


0

이것은 나를 위해 그것을 고쳤습니다. 새 프로젝트에서 작은 리팩터링을했습니다. 이전 google-services.json파일 을 사용하고 있다고 생각 했지만 잘못된 파일을 사용하고있었습니다. 이 간단한 오류를 깨닫기 전에 이틀 동안 다른 모든 것을 시도했습니다.


0

이것은 나에게 도움이되었습니다 (SHA1 가져 오기 문제였습니다)

cd .android 나는 SHA1 키를 사용하고 복사하여 firebase, 프로젝트 구성, Android 애플리케이션, SHA 인증서에 붙여 넣었습니다.

keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

그리고 다음을 사용하여 키를 하나 더 만들었습니다.

keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048-유효성 10000

그리고 이것을 사용하여 SHA 키를 하나 더 가져 왔습니다.

keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android

내 firebase 프로젝트에 키를 하나 더 추가하여 복사하여 붙여 넣었습니다.

또한 google-services.json을 다운로드하고 flutter 프로젝트 내부의 Android / app에 붙여 넣었습니다.

내 pubspec.yml 종속성이 제대로 작동했습니다.

  http: ^0.12.0+2
  cupertino_icons: ^0.1.2
  firebase_auth: ^0.15.1
  firebase_analytics: ^5.0.6
  firebase_core: ^0.4.2+1
  google_sign_in: ^4.0.14

내 코드 :

    Widget _signInButton() {
    return OutlineButton(
      splashColor: Colors.grey,
      onPressed: () async {
        await signInWithGoogle()
            .then((FirebaseUser user) => print(user.displayName))
            .catchError((e) => print(e));

      },

    );
  }

import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = new GoogleSignIn();

Future<FirebaseUser> signInWithGoogle() async {
  final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
  final GoogleSignInAuthentication googleSignInAuthentication =
      await googleSignInAccount.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleSignInAuthentication.accessToken,
    idToken: googleSignInAuthentication.idToken,
  );

  final AuthResult authResult = await _auth.signInWithCredential(credential);
  final FirebaseUser user = authResult.user;
  print(user.displayName.toString());
  assert(!user.isAnonymous);
  assert(await user.getIdToken() != null);

  final FirebaseUser currentUser = await _auth.currentUser();
  assert(user.uid == currentUser.uid);

  return user;
}

void signOutGoogle() async {
  await googleSignIn.signOut();

  print("User Sign Out");
}

이 일을 바랍니다.



0

이 오류가 발생합니다. PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException : 7 :, null) 아마도 솔루션이 당신에게 좋을 것입니다.

그리고 내 디버그 장치 (안드로이드 디버그 모드)가 인터넷에 연결되어 있지 않다는 것을 알고 있습니다. 인증이 실패 했으므로 메서드가 null 또는 사용자가 null을 반환한다고 생각합니다.

반환 된 변수는 사용하기 전에 확인해야합니다.


귀하의 답변을 따르기가 어렵습니다. 영어 ( 1 언어가 아님)를 사용하여 도움을받을 수 있습니까?
수염이 희끗 희끗 한

0

제 경우에는 어떤 답변도 문제를 해결하지 못했습니다. 몇 가지 생각 끝에 언젠가 내 응용 프로그램의 패키지 이름을 변경 했음을 깨달았습니다 . 이 경우 Firebase 프로젝트 내에 새 패키지 이름으로 다른 애플리케이션을 만들고 google-services.json 파일을 다시 다운로드해야합니다.


0

출시 된 앱이 제대로 작동하지 않고 Google Play 서명을 사용중인 경우 Play 스토어 계정에서 SHA를 복사하면 로컬 키 의 SHA 가 작동하지 않습니다. 여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.