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!
firebase
flutter
dart
firebase-authentication
google-signin
Boyan Bozhidarov
sumber
sumber
ApiException: 10
dan 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'.Jawaban:
Saya mengalami masalah yang sama sekarang. Ini mungkin terjadi jika Anda menjalankan debug dan Anda tidak mendaftarkan
SHA
sidik jari di firebase. Saya menyelesaikannya dengan membuatdebug.keystore
dan mendaftarkannya di dalam aplikasi di Firebase. Jangan lupa unduh yang barugoogle-services.json
setelah itu. Lihat juga ini .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-authJika 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.
sumber
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
sumber
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.
sumber
Anda perlu mengonfigurasi proyek Google Cloud Api dengan paket Anda.
Pastikan untuk masuk dengan akun yang sama dari Firebase
cd android
./gradlew signingReport
ataugradlew signingReport
google-services.json
flutter clean
IOS:
GoogleService-info.plist
sumber
Saya menghabiskan waktu lama untuk mencoba memperbaikinya.
1. Buka grade.properties File ini ada di: {{YOUR PROJECT}} / android / gradle.properties
2. Tambahkan argumen berikut ke 'org.gradle.jvmargs' seperti yang ditunjukkan pada tangkapan layar.
-XX: MaxHeapSize = 256m -Xmx256m
3. Klik kanan pada 'gradlew' dan pergi ke 'Open in Terminal'. File ini ada di {{YOUR PROJECT}} / android / gradlew
4. Ketik perintah berikut.
Jika tidak berhasil, coba perintah kedua:
5. Tunggu kompilasi selesai dan kunci SHA Anda akan dicetak untuk Anda.
Gunakan kunci ini untuk mengautentikasi aplikasi Anda di https://console.firebase.google.com/
sumber
Bagi saya, saya tidak perlu menambahkan SHA ekstra, saya menyadari bahwa saya tidak mengaktifkan metode Login dengan Google di tab Authentication di Firebase console
sumber
Langkah tambahan yang mungkin harus Anda lakukan agar google_sign_in berfungsi:
keytool -list -v -keystore ~/key.jks -alias key
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.
# 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.**
sumber
Anda melewatkan langkah konfigurasi, aktifkan login google di firebase.
✅ Selesaikan saja langkah-langkah yang cukup di bawah ini
project-level setting
. Cara Menghasilkan sertifikat .google-service.json
ke dalam proyek Anda.flutter clean
flutter run
sumber
"Flutter clean" adalah bagian yang hilang dari semua orang setelah mendaftarkan SHA1 di Firebase Console!
sumber
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:
Layar Anda sekarang akan terlihat seperti contoh ini dengan langkah 6
Berikut adalah contoh yang disorot tentang bagaimana wilayah ini harus diisi pada langkah 7
Langkah-langkah ini berhasil untuk saya! Meskipun tautannya mungkin belum ada, saya ingin merujuk sumber solusi ini di sini
sumber
Untuk pengecualian platform 10, coba ini:
sumber
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).
sumber
Pastikan SHA-1 harus menjadi kunci debug yang dibuat hanya di sistem Anda, lalu unduh file google-services.json yang menambahkannya ke proyek Anda
sumber
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.
sumber
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 .
sumber
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
sumber
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.
sumber
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.
sumber
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
remove
penginstalan danre-install
aplikasi.sumber
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.
sumber
Membangun appbundle (yang direkomendasikan oleh Google Play dan Flutter) akan menyebabkan kesalahan ini. Membangun apk akan menyelesaikan masalah ini.
Lihat masalah 58194425
sumber
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:
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:
5.) Menambahkan sidik jari SHA1 ke konfigurasi di firebase
Itu di pihak saya. Saya harap ini membantu seseorang.
sumber
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.
sumber
Ini memperbaikinya untuk saya. Saya melakukan refactor kecil di proyek baru. Saya pikir saya menggunakan
google-services.json
file lama saya tetapi saya telah menggunakan file yang salah. Saya mencoba yang lainnya selama dua hari sebelum menyadari kesalahan sederhana ini.sumber
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.
sumber
Harap pastikan Anda melakukan ini:
Aktifkan login Google dari konsol firebase Anda
Letakkan SHA-1 Anda saat menyiapkan aplikasi android firebase
sumber
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.
sumber
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.
sumber
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.
sumber
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
sumber