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

95

Dialog (formulir Google) untuk kredensial berhasil dibuka, tetapi setelah saya mengisi kredensial saya, saya mendapatkan kesalahan ini. Saya mengikuti instruksi dari sini . Membuat proyek Firebase, mengaktifkan Google Drive API (itulah yang saya butuhkan untuk saat ini) dari Google API Console.

Kode yang memunculkan pengecualian:

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

await _googleSignIn.signIn();

Itulah jejak tumpukan:

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)

Versi plugin google_sign_in adalah 4.0.0.

Itu adalah output dari 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.

Bantuan apa pun akan sangat dihargai. Terima kasih!

Boyan Bozhidarov
sumber
Kepada semua: perhatikan kode pengecualian ApiException: 10dan lihat dokumennya terlebih dahulu - developers.google.com/android/reference/com/google/android/gms/… Pastikan Anda memperbaiki masalah yang benar. Misalnya kode 7 hanya berarti 'tidak ada koneksi internet'.
Kirill Karmazin
Jalankan ./gradlew signedReport, di bawah folder aplikasi Android. Tambahkan SHA1 di konfigurasi Google Sign in google Firebase. developers.google.com/android/guides/client-auth . Anda akan membutuhkan SHA1 untuk setiap komputer yang Anda gunakan.
cinta langsung
@CirebonKuliner tahu apa itu 12500? E / flutter (23795): [ERROR: flutter / lib / ui / ui_dart_state.cc (157)] Unhandled Exception: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)
raiton

Jawaban:

145

Saya mengalami masalah yang sama sekarang. Ini mungkin terjadi jika Anda menjalankan debug dan Anda tidak mendaftarkan SHAsidik jari di firebase. Saya menyelesaikannya dengan membuat debug.keystoredan mendaftarkannya di dalam aplikasi di Firebase. Jangan lupa unduh yang baru google-services.jsonsetelah itu. Lihat juga ini .

masukkan deskripsi gambar di sini

Edit Jika Anda tidak dapat menggunakan otentikasi dalam mode rilis coba berikut ini:

-Tambahkan sidik jari sertifikat SHA dari kunci rilis.

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

Untuk detail lebih lanjut tentang itu, lihat di sini di bagian "get release certificate" https://developers.google.com/android/guides/client-auth

Jika otentikasi Anda masih tidak berfungsi, mungkin itu karena Anda mengunduh aplikasi dari Playstore dan Anda mengaktifkan "Fitur Penandatanganan Aplikasi oleh Google Play". Kemudian untuk kasus ini, buka konsol publikasi play store dan buka penandatanganan aplikasi di bawah pengelolaan rilis. Di sana Anda akan menemukan sidik jari sertifikat SHA untuk didaftarkan di konsol Firebase.

masukkan deskripsi gambar di sini

TSR
sumber
18
Terima kasih untuk ini. Ini membantu. Perlu diperhatikan bahwa kunci SHA1 dan SHA256 harus ditambahkan agar
autentikasi
2
Terima ini sebagai jawaban.
Muruganandham K
@TSR ini berfungsi tetapi saya tidak perlu mengunduh google-services.json baru.
Darren Cole
2
FYI, saya mengalami kesalahan yang sama bahkan setelah mengkonfigurasi sidik jari sha saya. Ternyata saya juga harus menambahkan alamat email dukungan per github.com/flutter/flutter/issues/25909#issuecomment-497378619 .
Michael Nelson
@MichaelNelson ini juga masalah saya
wwwwwwwwwwww
38

Solusi berikut berfungsi dalam proyek flutter:

Langkah 1: Buat kunci SHA1 dan SHA256 .
Langkah 2: Tambahkan SHA1 dan SHA256 ke firebase. (di setelan aplikasi Anda)
Langkah 3: Unduh google-services.json ke android / app di folder proyek Anda.
Langkah 4: Di terminal Anda, jalankan perintah flutter clean.
Langkah 5: Jalankan aplikasi flutter Anda.

Untuk informasi lebih lanjut kunjungi:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup

Rabi Roshan
sumber
8
bersih sangat penting
mkkhedawat
25

Ketika saya menemukan masalah ini, saya mencoba semua solusi lain yang dijelaskan dalam posting ini. Tak satu pun dari ini berhasil. Akhirnya saya menemukan jawabannya: Dalam situasi saya, saya harus memastikan untuk menyetel "email dukungan" saya.

Email Dukungan Pengaturan Publik

Johan Witters
sumber
22

Anda perlu mengonfigurasi proyek Google Cloud Api dengan paket Anda.

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

Pastikan untuk masuk dengan akun yang sama dari Firebase

  1. Pilih proyek firebase Anda
  2. Pilih Android
  3. Buka terminal di dalam proyek flutter Anda
  4. cd android
  5. ./gradlew signingReport atau gradlew signingReport
  6. Tempel nama paket Anda dan kunci SHA1 Anda
  7. Unduh Informasi Klien
  8. Unduh dan ganti google-services.json
  9. flutter clean

IOS:

  1. Pilih proyek Firebase Anda
  2. Pilih IOS
  3. Masukkan ID Paket Anda
  4. Unduh kredetial
  5. Unduh dan ganti GoogleService-info.plist
Matteo Antolini
sumber
2
gradlew signReport sangat membantu saya, karena saya pertama kali menggunakan keystore yang salah. Dan dengan perintah itu, Anda pasti mendapatkan yang benar.
BHuelse
17

Saya menghabiskan waktu lama untuk mencoba memperbaikinya.

1. Buka grade.properties File ini ada di: {{YOUR PROJECT}} / android / gradle.properties

masukkan deskripsi gambar di sini

2. Tambahkan argumen berikut ke 'org.gradle.jvmargs' seperti yang ditunjukkan pada tangkapan layar.

-XX: MaxHeapSize = 256m -Xmx256m

masukkan deskripsi gambar di sini

3. Klik kanan pada 'gradlew' dan pergi ke 'Open in Terminal'. File ini ada di {{YOUR PROJECT}} / android / gradlew

masukkan deskripsi gambar di sini

4. Ketik perintah berikut.

gradlew signingReport

Jika tidak berhasil, coba perintah kedua:

./gradlew signingReport

5. Tunggu kompilasi selesai dan kunci SHA Anda akan dicetak untuk Anda.

masukkan deskripsi gambar di sini

Gunakan kunci ini untuk mengautentikasi aplikasi Anda di https://console.firebase.google.com/

KylianMbappe
sumber
1
Bagi saya itu adalah satu-satunya hal yang berhasil, keytool saya dihasilkan tidak berfungsi SHA-1 / SHA-256
PRO GRAMMER
4
Jika langkah 4 tidak berhasil, panggil gradlew seperti ini: ./gradlew penandatangananLaporan
Tincho825
1
Menimpali untuk mengatakan ini juga satu-satunya hal yang berhasil untuk saya. Mencoba segala sesuatu yang lain dan menghabiskan berhari-hari mencoba menyelesaikan masalah sebelum menemukan ini.
Mark Rawlingson
Mendapatkan kesalahan ini: Tidak dapat menginisialisasi kelas org.codehaus.groovy.runtime.InvokerHelper
Ramis
ini adalah cara termudah! ini harus diterima.
reverie_ss
11

Bagi saya, saya tidak perlu menambahkan SHA ekstra, saya menyadari bahwa saya tidak mengaktifkan metode Login dengan Google di tab Authentication di Firebase console

Mengaktifkan metode login Google di Firebase console

Vidral Bonvi
sumber
7

Langkah tambahan yang mungkin harus Anda lakukan agar google_sign_in berfungsi:

] [2]

  • Jika Anda dapat menjalankan Google Sign In selama debug tetapi TIDAK dalam rilis, ada kemungkinan besar Anda tidak menambahkan SHA1 dan SHA256 kunci rilis ke firebase. Untuk mendapatkan SHA kunci rilis, gunakankeytool -list -v -keystore ~/key.jks -alias key

menghibur Anda harus mendapatkan setidaknya 6 kredensial SHA : 2 dari kunci debug, 2 dari penautan Google Play, dan 2 dari kunci rilis. Perhatikan bahwa Anda tidak perlu mendownload ulang file google-services.json setelah menambahkan kredensial SHA rilis ke firebase.

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.**
function1983
sumber
7

Anda melewatkan langkah konfigurasi, aktifkan login google di firebase.

Masuk dengan Google secara otomatis dikonfigurasi pada aplikasi iOS dan web Anda yang terhubung. Untuk mengatur masuk dengan Google untuk aplikasi Android Anda, Anda perlu menambahkan sidik jari SHA1 untuk setiap aplikasi pada Pengaturan Proyek Anda.

✅ Selesaikan saja langkah-langkah yang cukup di bawah ini

  1. Aktifkan Metode Google Auth
  2. Konfigurasikan sidik jari sertifikat dalam proyek Anda saat ini di project-level setting. Cara Menghasilkan sertifikat .
  3. Pilih email untuk email dukungan Proyek
  4. Unduh google-service.jsonke dalam proyek Anda.
  5. Lari flutter clean
  6. Mulailah flutter run

gambar

Sen Sokha
sumber
6

"Flutter clean" adalah bagian yang hilang dari semua orang setelah mendaftarkan SHA1 di Firebase Console!

Roger Gusmao
sumber
3

Salah satu alasan Anda mengalami kesalahan ini adalah jika Anda tidak mengisi formulir izin OAuth Google. Ini adalah perubahan baru pada Firebase.

Berikut langkah-langkah yang perlu Anda ikuti untuk mengisi formulir persetujuan untuk aplikasi Anda:

  1. Arahkan ke konsol google api (saat ini di https://console.developers.google.com ), pastikan Anda masuk ke akun Anda di mana proyek firebase Anda dibuat.
  2. Pilih proyek Anda dari menu tarik-turun "pilih proyek" di kiri atas konsol pengembang.
  3. Di panel kiri, buka "kredensial", lalu alihkan ke "layar persetujuan OAuth".
  4. Di bawah "Nama aplikasi" masukkan nama publik aplikasi Anda
  5. Di bawah "Logo aplikasi" unggah file gambar lokal dari aplikasi Anda
  6. Di bawah "Email dukungan", masukkan email dukungan yang sama yang tercantum di aplikasi Firebase Anda.

Layar Anda sekarang akan terlihat seperti contoh ini dengan langkah 6

  1. Gulir ke bawah dan isi "Tautan Beranda Aplikasi", "Tautan Kebijakan Privasi Aplikasi", dan "Tautan Persyaratan Layanan Aplikasi" dengan menambahkan http: // sebelum domain resmi tempat aplikasi firebase berada.

Berikut adalah contoh yang disorot tentang bagaimana wilayah ini harus diisi pada langkah 7

  1. Klik Simpan

Langkah-langkah ini berhasil untuk saya! Meskipun tautannya mungkin belum ada, saya ingin merujuk sumber solusi ini di sini

Ben Elliott
sumber
Apakah ini benar-benar jawaban atas pertanyaan tersebut?
Bulat
Terima kasih atas masukannya. Saya mencoba memperbarui jawaban saya agar lebih spesifik - beri tahu saya jika sekarang sudah sesuai - dan jika tidak, bagaimana saya bisa memperbaikinya.
Ben Elliott
1
Apakah Anda perlu "Kirim untuk Verifikasi", atau hanya "Simpan"?
sederhana
3

Untuk pengecualian platform 10, coba ini:

  1. Hasilkan sidik jari SHA1 baru di mesin Anda,
  2. Buka setelan aplikasi android firebase Anda di Firebase Console
  3. Klik tambahkan sidik jari baru di pengaturan aplikasi android Anda
  4. Tempel sidik jari SHA1 baru ke dalam bidang
  5. Buat file konfigurasi json baru
  6. Ganti file konfigurasi di direktori android
  7. Jalankan flutter clean
  8. Jalankan proyek Anda
Mithilesh Parmar
sumber
2

Ini mungkin tampak konyol, tetapi itu baru saja terjadi pada saya sekarang (setelah memiliki pengalaman bekerja dengan firebase di masa lalu). Saya perhatikan bahwa saya tidak mengaktifkan otentikasi Google. Pastikan Anda melakukannya, karena Anda mungkin masih melihat perintah masuk (menunjukkan pengguna Google ponsel Anda, tanpa mengaktifkannya).

Orang
sumber
di mana saya mengaktifkannya?
Ahmed Albarody
@AhmedAlbarody Di konsol firebase Anda - pilih autentikasi, lalu Anda harus mengaktifkan layanan yang ingin Anda gunakan.
Guy
1

Pastikan SHA-1 harus menjadi kunci debug yang dibuat hanya di sistem Anda, lalu unduh file google-services.json yang menambahkannya ke proyek Anda

Varun Kumar Medam
sumber
1

pastikan Anda telah menambahkan

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

di android / build.gradle dan

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

di android / app / build.gradle . Selain itu, pastikan applicationId di android / app / build.gradle sama dengan nama paket Anda di AndroidManifest.xml (Anda mungkin lupa mengubah applicationId setelah terkadang mengubah nama paket). ApplicationId atau nama paket ini dalam file manifes haruslah nama nama paket android Anda di aplikasi firebase.

Sachin
sumber
1

Anda harus membuat SHA-1 dan SHA-256 untuk setiap pc yang Anda gunakan. Dan tambahkan semuanya ke setelan proyek firebase.

Dan Anda harus mengisi formulir di tab Persetujuan OAuth .

gökhan
sumber
1

Jika sebelumnya berfungsi tetapi sekarang menggunakan PC yang berbeda, Anda harus menambahkan sidik jari SHA-1 / SHA-256 baru yang dibuat oleh PC tersebut ke proyek Anda di Firebase . Contoh langkah demi langkah yang baik untuk melakukan itu: https://stackoverflow.com/a/56091158/5365164

J. Saw
sumber
1

Dalam kasus saya, ini adalah kesalahan konyol, pastikan applicationId Anda di firebase seperti: 'com.example.appname' sama persis dengan applicationId di file app / src / build.gradle Anda, di bawah defaultConfig {}. Tidak ada kesalahan ejaan , tidak ada huruf besar, huruf kecil bertentangan.Dalam kasus saya satu huruf adalah huruf besar yang menyebabkan semua masalah.

RohitDubey 22
sumber
0

Di android / app / build.gradle saya mengubah dependensi dari com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 menjadi com.android.tools.build:gradle : 3.2.1 / com.google.gms: layanan-google: 4.2.0 . Dan itu berhasil.

Boyan Bozhidarov
sumber
0

Saat mendaftarkan aplikasi di Firebase, saya mengubah applicationId saya menjadi sesuatu yang sesuai dengan aplikasi saya. Namun, hal ini mengakibatkan aplikasi Flutter kedua dipasang di ponsel saya saat saya menjalankan debugger (Tentu saja, karena perubahan applicationId). Jadi, hal yang berhasil untuk situasi saya, adalah untuk removepenginstalan dan re-installaplikasi.

NielsB95
sumber
0

Saya mencoba semua hal di atas dan tidak ada yang berhasil. Kesalahan saya adalah saya memiliki beberapa folder versi android studio di drive saya dan saya memberi makan kunci SHA1 yang salah dalam pengaturan firebase.

shahana kareen
sumber
0

Membangun appbundle (yang direkomendasikan oleh Google Play dan Flutter) akan menyebabkan kesalahan ini. Membangun apk akan menyelesaikan masalah ini.

Lihat masalah 58194425

Lebih sederhana
sumber
0

Saya memiliki masalah dan membutuhkan waktu 5 jam untuk menyelesaikannya. Saya ingat saya pernah membaca bahwa Pengecualian API 10 berarti ada masalah dengan sidik jari. Jadi, itu pasti keystore atau kesalahan konfigurasi di firebase. Akhirnya, itu adalah keystore. Saya masih tidak yakin mengapa ini berhasil tetapi inilah yang saya lakukan, omong-omong, saya menggunakan Windows 10:

1.) Pastikan bahwa pada file android / build.gradle saya memiliki yang berikut:

buildscript {
    repositories {
        google()
        jcenter()
    }

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

2.) Saya menambahkan dua baris ini ke file android / gradle.properties

android.useAndroidX=true
android.enableJetifier=true

3.) Arahkan ke C: \ Users \ YOURUSER \ .android dan hapus yang berikut ini:

debug.keystore
debug.keystore.lock

4.) Buka terminal sebagai admin, dan buat keystore debug di direktori ini.

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

Mendapatkan sidik jari:

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

5.) Menambahkan sidik jari SHA1 ke konfigurasi di firebase

Itu di pihak saya. Saya harap ini membantu seseorang.

Morfinismo
sumber
0

Pastikan sertifikat penandatanganan yang Anda gunakan di konsol firebase sama dengan yang digunakan dalam penandatangananConfigs >> konfigurasi debug di file app / build.gradle saat masih dalam pengembangan. Kesalahan yang tidak cocok menyebabkan kesalahan.

Tonui Nicholus
sumber
0

Ini memperbaikinya untuk saya. Saya melakukan refactor kecil di proyek baru. Saya pikir saya menggunakan google-services.jsonfile lama saya tetapi saya telah menggunakan file yang salah. Saya mencoba yang lainnya selama dua hari sebelum menyadari kesalahan sederhana ini.

Oprimus
sumber
0

Ini membantu saya (ada masalah saat mengimpor SHA1)

cd .android saya menggunakan dan menyalin kunci SHA1 dan menempelkannya di firebase, konfigurasi proyek, aplikasi android, sertifikat SHA

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

dan saya juga membuat satu kunci lagi dengan:

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

dan menggunakan ini untuk mengambil satu kunci SHA lagi:

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

saya menyalin dan menempel menambahkan satu kunci lagi dalam proyek firebase saya.

juga mendownload google-services.json dan ditempel di Android / app di dalam proyek flutter.

Ini bekerja dengan baik, depensi pubspec.yml saya:

  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

kode saya:

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

Saya berharap ini berhasil.

Pedro Molina
sumber
0

Harap pastikan Anda melakukan ini:

ikhsanudinhakim
sumber
0

Saya mendapatkan kesalahan ini: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 :, null) Mungkin solusi baik untuk Anda.

Dan saya menyadari perangkat debug saya (mode debug android) tidak terhubung ke internet. Saya pikir otentikasi gagal sehingga metode mengembalikan nol atau pengguna sama dengan nol.

Variabel yang dikembalikan harus diperiksa sebelum digunakan.

Ali Baransel ORAL
sumber
Saya merasa sulit untuk mengikuti jawaban Anda: dapatkah Anda mendapatkan bantuan menggunakan bahasa Inggris (bukan bahasa pertama saya )?
greybeard
0

Dalam kasus saya, tidak ada jawaban yang menyelesaikan masalah. Setelah berpikir beberapa lama, saya menyadari bahwa beberapa waktu yang lalu saya telah mengubah nama paket aplikasi saya . Jika itu kasus Anda, Anda cukup membuat aplikasi lain di dalam proyek Firebase dengan nama paket baru Anda dan mendownload file google-services.json lagi.

Anderson Dalbert
sumber
0

Namun, jawaban yang diberikan di atas benar, tetapi tetap saja, jika Anda mengalami masalah, jangan lupa untuk memverifikasi bagian penandatanganan {} dari app / build.gradle. Ini tidak boleh memiliki referensi file keystore yang tidak diinginkan, yang dapat menyebabkan ketidakcocokan dengan google-services.json dan keystore.

RamKr
sumber
0

Jika aplikasi yang Anda rilis tidak berfungsi dengan baik, dan Anda menggunakan Penandatanganan Google Play, Salin SHA dari akun play store Anda , yang dari kunci lokal Anda tidak akan berfungsi masukkan deskripsi gambar di sini

Omar Amar
sumber