Flutter ve google_sign_in eklentisi: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 10:, null)


95

Kimlik bilgilerine ilişkin iletişim kutusu (Google formu) başarıyla açıldı, ancak kimlik bilgilerimi doldurduktan sonra bu hatayı alıyorum. Talimatları buradan takip ettim . Bir Firebase projesi oluşturdum, Google API Konsolu'ndan Google Drive API'yi (şimdilik ihtiyacım olan şey) etkinleştirdim.

İstisnayı atan kod:

final GoogleSignIn _googleSignIn = GoogleSignIn(
  scopes: [
    'https://www.googleapis.com/auth/drive',
  ],
);

await _googleSignIn.signIn();

Bu yığın izleme:

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 eklentisinin sürümü 4.0.0'dır .

Flutter doctot -v'nin çıktısı budur :

[√] 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.

Herhangi bir yardım çok takdir edilecektir. Teşekkürler!


Herkes için: istisna koduna dikkat edin ApiException: 10ve önce dokümanlara bakın - developers.google.com/android/reference/com/google/android/gms/… Doğru sorunu düzelttiğinizden emin olun. Örneğin, kod 7 sadece 'internet bağlantısı yok' anlamına gelir.
Kirill Karmazin

./Gradlew signingReport komutunu çalıştırın, uygulama Android klasörünün altındadır. Google Firebase Google Oturum Açma yapılandırmasına SHA1 ekleyin. developer.google.com/android/guides/client-auth . Üzerinde çalıştığınız her bilgisayar için bir SHA1'e ihtiyacınız olacak.
live-love

@KirillKarmazin 12500'ün ne olduğu hakkında bir fikriniz var mı? E / flutter (23795): [HATA: flutter / lib / ui / ui_dart_state.cc (157)] İşlenmemiş İstisna: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)
raiton

Yanıtlar:


143

Şimdi aynı sorunla karşılaşıyorum. Hata ayıklamak üzerinde çalıştırıyorsanız, bu kudreti olur ve did değil bir kayıt SHAFirebase içinde parmak izi. Bir üreterek bunu çözmüş debug.keystoreve Firebase uygulamayla içine kayıt. Bundan google-services.jsonsonra yenisini indirmeyi unutmayın . Ayrıca buna bakın .

görüntü açıklamasını buraya girin

Düzenle Serbest bırakma modunda kimlik doğrulamayı kullanamıyorsanız, aşağıdakileri deneyin:

- Serbest bırakma anahtarının SHA sertifikası parmak izlerini ekleyin.

keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>

Bununla ilgili daha fazla ayrıntı için https://developers.google.com/android/guides/client-auth bölümüne bakın."get release certificate"

Kimlik doğrulamanız hala çalışmıyorsa, bunun nedeni muhtemelen uygulamayı Playstore'dan indirmiş olmanız ve "Google Play ile Uygulama İmzalama" özelliğini etkinleştirmiş olmanızdır. Daha sonra bu durumda, Play Store yayınlama konsoluna gidin ve sürüm yönetimi altında uygulama imzalamaya gidin. Orada, Firebase konsoluna kaydolmak için SHA sertifikası dijital parmak izini bulacaksınız.

görüntü açıklamasını buraya girin


17
Bunun için teşekkürler. Bu yardımcı oldu. Kimlik doğrulamanın çalışması için hem SHA1 hem de SHA256 anahtarlarının eklenmesi gerektiğine dikkat çekmek önemlidir
Srini

2
Bunu cevap olarak kabul edin.
Muruganandham K.

@TSR bu işe yaradı ama yeni bir google-services.json indirmem gerekmedi.
Darren Cole

2
Bilginize, sha parmak izlerimi yapılandırdıktan sonra bile aynı hatayı aldım. Ayrıca github.com/flutter/flutter/issues/25909#issuecomment-497378619 başına bir destek e-posta adresi eklemem gerekti .
Michael Nelson

@MichaelNelson bu benim de sorunumdu
wwwwwwwwwwwwww

38

Flutter projesinde aşağıdaki çözüm işe yarar:

1. Adım: SHA1 ve SHA256 anahtarlarını oluşturun .
2. Adım: Hem SHA1'i hem de SHA256'yı firebase'e ekleyin. (ayarlar uygulamasında)
3. Adım: Yükleme google-services.json için android / uygulaması proje klasöründe.
Adım 4: Terminalinizde komutu çalıştırın flutter clean.
5. Adım: Flutter uygulamanızı çalıştırın.

Daha fazla bilgi için şu adresi ziyaret edin:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup


8
temizlik çok önemli
mkkhedawat

25

Bu sorunla karşılaştığımda, bu yazıda açıklanan diğer tüm çözümleri denedim. Bunların hiçbiri işe yaramadı. Sonunda anladım: Benim durumumda "destek e-postamın" ayarlandığından emin olmak zorunda kaldım.

Genel Ayar Desteği E-postası


21

Google Cloud Api projenizi paketinizle yapılandırmanız gerekir.

https://developers.google.com/identity/sign-in/android/start-integrating#configure_a_project

Aynı Firebase hesabıyla giriş yaptığınızdan emin olun

  1. Firebase projenizi seçin
  2. Android'i seçin
  3. Flutter projenizin içindeki terminali açın
  4. cd android
  5. ./gradlew signingReport veya gradlew signingReport
  6. Paket adınızı ve SHA1 anahtarınızı yapıştırın
  7. Müşteri Bilgilerini İndirin
  8. İndirin ve değiştirin google-services.json
  9. flutter clean

IOS:

  1. Firebase projenizi seçin
  2. IOS seçin
  3. Paket Kimliğinizi girin
  4. Kimlik bilgilerini indirin
  5. İndirin ve değiştirin GoogleService-info.plist

2
gradlew signingReport bana çok yardımcı oluyor, çünkü önce yanlış anahtar deposunu kullanıyorum. Ve bu komutla kesinlikle doğru olanı elde edersiniz.
BHuelse

17

Bunu düzeltmek için yıllar harcadım.

1. Grade.properties dosyasını açın Bu dosya {{PROJENİZ}} / android / gradle.properties altında bulunur

görüntü açıklamasını buraya girin

2. Aşağıdaki bağımsız değişkeni ekran görüntüsünde gösterildiği gibi 'org.gradle.jvmargs'a ekleyin.

-XX: MaxHeapSize = 256m -Xmx256m

görüntü açıklamasını buraya girin

3. 'gradlew'i sağ tıklayın ve' Terminalde Aç'a gidin Bu dosya {{PROJENİZ}} / android / gradlew altında bulunur

görüntü açıklamasını buraya girin

4. Aşağıdaki komutu yazın.

gradlew signingReport

İşe yaramadıysa ilk önce ikinci komutu deneyin:

./gradlew signingReport

5. Derlemenin bitmesini bekleyin ve SHA anahtarlarınız sizin için yazdırılmalıdır.

görüntü açıklamasını buraya girin

Https://console.firebase.google.com/ adresinde uygulamanızın kimliğini doğrulamak için bu anahtarları kullanın


1
Benim için işe yarayan tek şey bu, anahtar aracım çalışmıyor SHA-1 / SHA-256
PRO GRAMMER

4
4. adım işe yaramadıysa, bunun yerine gradlew'i şu şekilde arayın: ./gradlew signingReport
Tincho825

1
Bunun benim için işe yarayan tek şey olduğunu söylemek için şarkı söylüyorum. Her şeyi denedim ve bunu bulmadan önce sorunu çözmeye çalışmak için günler harcadı.
Mark Rawlings4

Bu hatayı alma: org.codehaus.groovy.runtime.InvokerHelper sınıfı başlatılamadı
Ramis

bu en kolay yöntemdir! bu kabul edilmelidir.
reverie_ss

11

Benim için ben etkinleştirmek olmadığını anladım, ekstra Şas eklemek gerek yoktu Google Oturum Açma yönteminde de Doğrulama sekmesini Firebase konsolunun

Firebase konsolunda Google oturum açma yöntemini etkinleştirme


7

Google_sign_in’in çalışması için uygulamanız gerekebilecek ek adımlar:

] [2]

  • Hata ayıklama sırasında Google Oturum Açma'yı çalıştırabilirseniz ancak sürümde DEĞİLSE, yüksek ihtimalle sürüm anahtarınızın SHA1 ve SHA256'sını firebase'e eklememişsinizdir. Yayın anahtarının SHA'larını almak için şunu kullanın:keytool -list -v -keystore ~/key.jks -alias key

konsol Toplamda en az 6 SHA kimlik bilgisine sahip olmalısınız : 2 tanesi hata ayıklama anahtarından, 2 tanesi Google Play bağlantısından ve 2 tanesi sürüm anahtarından. Firebase'e sürüm SHA kimlik bilgilerini ekledikten sonra google-services.json dosyasını yeniden indirmenize gerek olmadığını unutmayın.

Firebase

# 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'de google girişini etkinleştirme adımını kaçırdınız.

Google oturum açma, bağlı iOS ve web uygulamalarınızda otomatik olarak yapılandırılır. Android uygulamalarınız için Google oturum açma özelliğini ayarlamak üzere Proje Ayarlarınızdaki her bir uygulama için SHA1 parmak izini eklemeniz gerekir.

Aşağıdaki yeterli adımları tamamlayın

  1. Google Kimlik Doğrulama Yöntemini etkinleştirin
  2. Adresinde mevcut projenizdeki sertifika parmak izlerini yapılandırın project-level setting. Sertifika nasıl oluşturulur .
  3. Proje destek e- postası için e-posta seçin
  4. google-service.jsonProjenize indirin .
  5. Çalıştırmak flutter clean
  6. Başlat flutter run

görüntü


6

Firebase Console'da SHA1'i kaydettikten sonra herkesin eksik olduğu parça "Flutter clean"!


3

Bu hatayla karşılaşmanızın bir nedeni, Google'ın OAuth izin formunu doldurmamış olmanız olabilir. Bu, Firebase'de yeni bir değişikliktir.

Uygulamanız için onay formunu doldurmak için izlemeniz gereken adımlar şunlardır:

  1. Google api konsoluna gidin (şu anda https://console.developers.google.com adresinde ), altında firebase projenizin oluşturulduğu hesabınıza giriş yaptığınızdan emin olun.
  2. Geliştirici konsolunun sol üst kısmındaki "bir proje seçin" açılır listesinden projenizi seçin.
  3. Sol taraftaki bölmede "kimlik bilgilerine" gidin ve ardından "OAuth izin ekranına" geçin.
  4. "Uygulama adı" altında uygulamanızın genel adını girin
  5. "Uygulama logosu" altında, uygulamanızın yerel bir resim dosyasını yükleyin
  6. "Destek e-postası" altında, firebase uygulamanızda listelenen aynı destek e-postasını girin.

Ekranınız şimdi 6. adımdaki bu örnek gibi görünmelidir

  1. Firebase uygulamanızın bulunduğu yetkili alan adının önüne http: // ekleyerek aşağı kaydırın ve "Uygulama Ana Sayfası Bağlantısı", "Uygulama Gizlilik Politikası Bağlantısı" ve "Uygulama Hizmet Şartları Bağlantısı" nı doldurun.

İşte bu bölgelerin 7. adımda nasıl doldurulması gerektiğine dair vurgulanmış bir örnek.

  1. Kaydet'i tıklayın

Bu adımlar benim için çalıştı! Bağlantı hala mevcut olmasa da, burada bu çözümün kaynağına başvurmak istiyorum


Aslında sorunun cevabı mı?
Bulat

Geri bildirim için teşekkürler. Cevabımı daha spesifik olacak şekilde güncellemeye çalıştım - lütfen şimdi uygun olup olmadığını ve değilse nasıl geliştirebileceğimi bana bildirin.
Ben Elliott

1
"Doğrulama için Gönder" mi, yoksa sadece "Kaydet" mi gerekiyor?
Basit

3

Platform istisnası 10 için şunu deneyin:

  1. Makinenizde yeni bir SHA1 parmak izi oluşturun,
  2. Firebase Console'da firebase android uygulama ayarınıza gidin
  3. Android uygulama ayarlarınızda yeni parmak izi ekle'ye tıklayın
  4. Yeni SHA1 parmak izini alana yapıştırın
  5. Yeni bir json yapılandırma dosyası oluşturun
  6. Yapılandırma dosyasını android dizininde değiştirin
  7. Flutter'ı temiz çalıştır
  8. Projenizi çalıştırın

2

Bu aptalca görünebilir, ancak bu şimdi başıma geldi (geçmişte firebase ile çalışma deneyiminden sonra). Google kimlik doğrulamasını etkinleştirmediğimi fark ettim. Oturum açma istemini hala görebileceğiniz için (etkinleştirilmeden telefonunuzun google kullanıcılarını göstererek) bunu yaptığınızdan emin olun.


Nereden etkinleştirebilirim ki?
Ahmed Albarody

@AhmedAlbarody Firebase konsolunuzda - kimlik doğrulamasını seçin ve ardından kullanmak istediğiniz hizmetleri etkinleştirmeniz gerekir.
Guy

1

SHA-1'in yalnızca sisteminizde oluşturulan bir hata ayıklama anahtarı olması gerektiğinden emin olun ve ardından google-services.json dosyasını indirin ve bunu projenize ekleyin


1

eklediğinizden emin olun

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

android / build.gradle ve

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

içinde android / app / build.gradle . Ayrıca, android / app / build.gradle'daki applicationId'nin AndroidManifest.xml'deki paket adınızla aynı olduğundan emin olun (bazen paket adını değiştirdikten sonra applicationId'yi değiştirmeyi unutabilirsiniz). Manifest dosyasındaki bu uygulama kimliği veya paket adı, firebase uygulamasındaki android paket adınızın adı olmalıdır.


1

Kullandığınız her bilgisayar için SHA-1 ve SHA-256 oluşturmalısınız. Ve hepsini firebase proje ayarlarına ekleyin.

Ve OAuth Onayı sekmesindeki formu doldurmalısınız .



1

Benim durumumda bu aptalca bir hataydı, firebase'deki applicationId'inizin 'com.example.appname' gibi app / src / build.gradle dosyanızdaki applicationId ile defaultConfig {} altında tam olarak eşleştiğinden emin olun. Yazım hatası yok , hiçbir büyük harf, küçük harf uyuşmazlığı. Benim durumumda bir harf büyük harfti ve bu da tüm sorunlara neden oldu.


0

Gelen android / app / build.gradle ben den bağımlılıkları değişti com.android.tools.build:gradle:3.1.3 / com.google.gms: google-hizmetler: 3.2.1 için com.android.tools.build:gradle : 3.2.1 / com.google.gms: google-hizmetler: 4.2.0 . Ve işe yaradı.


0

Uygulamayı Firebase'e kaydederken uygulama kimliğimi uygulamama uygun bir şeye değiştirdim. Ancak bu, hata ayıklayıcıyı çalıştırdığımda telefonuma ikinci bir Flutter uygulamasının yüklenmesine neden oldu (Tabii ki, applicationId'deki değişiklik nedeniyle). Yani benim durumum için işe yarayan şey removehem kurulumlar hem re-installde uygulama oldu.


0

Yukarıdaki her şeyi denedim ve hiçbir şey işe yaramadı. Hatam, sürücümde birden fazla android stüdyo sürümü klasörüm olması ve firebase ayarlarında yanlış SHA1 anahtarı beslememdi.



0

Sorun yaşadım ve çözülmesi 5 saat sürdü. API İstisnası 10'un parmak izleriyle ilgili bir sorun olduğu anlamına geldiğini bir yerde okuduğumu hatırlıyorum. Yani, anahtar deposu veya firebase'de bir yanlış yapılandırma olmalıydı. Sonunda, anahtar deposu oldu. Bunun neden işe yaradığından hala emin değilim ama bu arada yaptığım buydu, Windows 10 kullanıyorum:

1.) android / build.gradle dosyasında aşağıdakilerin bulunduğundan emin olun :

buildscript {
    repositories {
        google()
        jcenter()
    }

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

2.) Bu iki satırı android / gradle.properties dosyasına ekledim

android.useAndroidX=true
android.enableJetifier=true

3.) C: \ Users \ YOURUSER \ .android'e gidin ve aşağıdakileri silin :

debug.keystore
debug.keystore.lock

4.) Terminali yönetici olarak açın ve bu dizinde hata ayıklama anahtar deposunu oluşturun.

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

Parmak izleri alındı:

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

5.) SHA1 parmak izlerini firebase'deki yapılandırmaya eklendi

Benim tarafımdan buydu. Umarım birine yardımcı olur.


0

Lütfen firebase konsolunda kullandığınız imzalama sertifikalarının, geliştirme aşamasındayken app / build.gradle dosyasındaki signingConfigs >> hata ayıklama yapılandırmasında kullanılanlarla aynı olduğundan emin olun. Missmatch, hataya neden olur.


0

Bu benim için düzeltti. Yeni bir projede küçük bir refaktör yaptım. Eski dosyamı kullandığımı sanıyordum google-services.jsonama yanlış dosyayı kullanıyordum. Bu basit hatayı fark etmeden önce iki gün boyunca her şeyi denedim.


0

Bu bana yardımcı oldu (SHA1'i içe aktarırken bir sorundu)

cd .android SHA1 anahtarını kullandım ve kopyaladım ve firebase, proje yapılandırması, android uygulaması, SHA sertifikasına yapıştırdım

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

ve ayrıca bir anahtar daha oluşturdum:

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

ve bunu bir SHA anahtarı daha almak için kullandı:

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

firebase projeme bir anahtar daha ekleyerek kopyalayıp yapıştırdım.

ayrıca google-services.json dosyasını indirip flutter projesinin içine Android / app'de yapıştırın.

Bu düzgün çalıştı, pubspec.yml depolarım:

  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

benim kodum:

    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");
}

Umarım bu işe yarar.



0

Şu hatayı alıyorum: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 :, null) Belki çözüm sizin için iyidir.

Ve hata ayıklama cihazımın (android hata ayıklama modu) internete bağlı olmadığını fark ettim. Kimlik doğrulamasının başarısız olduğunu düşünüyorum, bu nedenle yöntem null döndürür veya null'a eşit kullanıcı.

Döndürülen değişken kullanmadan önce kontrol edilmelidir.


Cevabınızı takip etmekte zorlanıyorum: İngilizce kullanarak yardım alabilir misiniz ( benim 1. dilim değil )?
gri sakal

0

Benim durumumda, cevapların hiçbiri sorunu çözmedi. Biraz düşündükten sonra, bir süre önce uygulamamın paket adını değiştirdiğimi fark ettim . Durumunuz buysa, Firebase projenizin içinde yeni paket adınızla başka bir uygulama oluşturmanız ve google-services.json dosyasını tekrar indirmeniz yeterlidir.


0

Ancak, yukarıda verilen cevaplar doğrudur, ancak yine de sorun yaşıyorsanız app / build.gradle'ın signingConfig {} bölümünü doğrulamayı unutmayın. Google-services.json ve anahtar deposu ile uyuşmazlığa neden olabilecek istenmeyen anahtar deposu dosyası referansına sahip olmamalıdır.


0

Yayınlanan uygulamanız düzgün çalışmıyorsa ve Google Play İmzalama kullanıyorsanız, Play Store hesabınızdan SHA'yı kopyalayın, yerel anahtarınızdaki uygulama çalışmayacaktır. görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.