El cuadro de diálogo (formulario de Google) para las credenciales se abre correctamente, pero después de completar mis credenciales, aparece este error. Seguí las instrucciones de aquí . Creé un proyecto de Firebase, habilité la API de Google Drive (eso es lo que necesito por ahora) desde la Consola de API de Google.
El código que lanza la excepción:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
Ese es el rastro de la pila:
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)
La versión del complemento google_sign_in es 4.0.0.
Esa es la salida de 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.
Cualquier ayuda será muy apreciada. ¡Gracias!
firebase
flutter
dart
firebase-authentication
google-signin
Boyan Bozhidarov
fuente
fuente
ApiException: 10
y consulte los documentos primero: developers.google.com/android/reference/com/google/android/gms/… Asegúrese de que está solucionando el problema correcto. Por ejemplo, el código 7 simplemente significaría 'sin conexión a Internet'.Respuestas:
Me encuentro con el mismo problema en este momento. Esto puede suceder si está ejecutando la depuración y no registró una
SHA
huella digital en firebase. Lo resolví generando undebug.keystore
y registrándolo dentro de la aplicación en Firebase. No olvide descargar el nuevogoogle-services.json
después de eso. Vea también esto .Editar Si no puede usar la autenticación en el modo de liberación, intente lo siguiente:
-Añadir las huellas digitales del certificado SHA de la clave de lanzamiento.
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
Para obtener más detalles al respecto, consulte aquí en la sección
"get release certificate"
https://developers.google.com/android/guides/client-authSi su autenticación aún no funciona, probablemente se deba a que descargó la aplicación de Playstore y habilitó la "Firma de aplicaciones mediante la función de Google Play". Luego, para este caso, vaya a la consola de publicación de Play Store y vaya a la firma de aplicaciones en la administración de versiones. Allí encontrará la huella digital del certificado SHA para registrarse en Firebase console.
fuente
La siguiente solución funciona en el proyecto flutter:
Paso 1: Genere las claves SHA1 y SHA256 .
Paso 2: agregue SHA1 y SHA256 a firebase. (en la configuración de su aplicación)
Paso 3: Descargue google-services.json a android / app en la carpeta de su proyecto.
Paso 4: En tu terminal ejecuta el comando
flutter clean
.Paso 5: Ejecuta tu aplicación Flutter.
Para obtener más información, visite:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup
fuente
Cuando me encontré con este problema, probé todas las demás soluciones descritas en esta publicación. Ninguno de estos funcionó. Finalmente lo descubrí: en mi situación, tenía que asegurarme de tener configurado mi "correo electrónico de soporte".
fuente
Necesita configurar su proyecto de Google Cloud Api con su paquete.
Asegúrese de iniciar sesión con la misma cuenta de Firebase
cd android
./gradlew signingReport
ogradlew signingReport
google-services.json
flutter clean
IOS:
GoogleService-info.plist
fuente
Pasé años tratando de arreglar esto.
1. Abra grade.properties Este archivo se encuentra en: {{SU PROYECTO}} / android / gradle.properties
2. Agregue el siguiente argumento a 'org.gradle.jvmargs' como se muestra en la captura de pantalla.
-XX: MaxHeapSize = 256m -Xmx256m
3. Haga clic derecho en 'gradlew' y vaya a 'Abrir en la terminal'. Este archivo se encuentra en {{SU PROYECTO}} / android / gradlew
4. Escriba el siguiente comando.
Si no funcionó, primero intente con el segundo comando:
5. Espere a que finalice la compilación y se le imprimirán las claves SHA.
Utilice estas claves para autenticar su aplicación en https://console.firebase.google.com/
fuente
Para mí, no necesitaba agregar SHA adicionales, me di cuenta de que no habilité el método de inicio de sesión de Google en la pestaña Autenticación en la consola de Firebase
fuente
Pasos adicionales que puede que deba seguir para que google_sign_in funcione:
keytool -list -v -keystore ~/key.jks -alias key
Deberías terminar con un total de al menos 6 credenciales SHA : 2 de la clave de depuración, 2 de la vinculación de Google Play y 2 de la clave de lanzamiento. Tenga en cuenta que no necesita volver a descargar el archivo google-services.json después de agregar las credenciales SHA de lanzamiento a 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.**
fuente
Ha omitido el paso de configuración, habilite el inicio de sesión de Google en Firebase.
✅ Simplemente complete estos suficientes pasos a continuación
project-level setting
. Cómo generar certificado .google-service.json
en su proyecto.flutter clean
flutter run
fuente
¡"Flutter clean" es la pieza que falta a todos después de registrar SHA1 en Firebase Console!
fuente
Una razón por la que podría estar experimentando este error es si no completó el formulario de consentimiento de OAuth de Google. Este es un nuevo cambio en Firebase.
Estos son los pasos que debe seguir para completar el formulario de consentimiento para su aplicación:
Su pantalla ahora debería verse como este ejemplo del paso 6
A continuación, se muestra un ejemplo destacado de cómo se deben completar estas regiones en el paso 7
¡Estos pasos funcionaron para mí! Si bien es posible que el enlace aún no exista, me gustaría hacer referencia a la fuente de esta solución aquí
fuente
Para la excepción de plataforma 10, intente esto:
fuente
Esto puede parecer una tontería, pero me acaba de pasar ahora (después de tener algo de experiencia trabajando con firebase en el pasado). Noté que no habilité la autenticación de Google. Asegúrese de hacer eso, ya que es posible que aún vea el mensaje de inicio de sesión (que le muestra los usuarios de Google de su teléfono, sin que esté habilitado).
fuente
Asegúrese de que SHA-1 debe ser una clave de depuración que se genera solo en su sistema, y luego descargue el archivo google-services.json y añádalo a su proyecto
fuente
asegúrese de haber agregado
dependencies { classpath 'com.google.gms:google-services:4.2.0' }
en android / build.gradle y
apply plugin: 'com.google.gms.google-services'
en android / app / build.gradle . Además, asegúrese de que applicationId en android / app / build.gradle sea el mismo que el nombre de su paquete en AndroidManifest.xml (puede que olvide cambiar applicationId después de cambiar el nombre del paquete a veces). Este applicationId o nombre de paquete en el archivo de manifiesto debe ser el nombre de su paquete de Android en la aplicación firebase.
fuente
Debe generar SHA-1 y SHA-256 para cada PC que utilizó. Y agréguelos todos a la configuración del proyecto de base de fuego.
Y debe completar el formulario en la pestaña Consentimiento de OAuth .
fuente
Si anteriormente funcionó pero ahora está usando una PC diferente, deberá agregar nuevas huellas dactilares SHA-1 / SHA-256 generadas por esa PC a su proyecto en Firebase . Un buen ejemplo paso a paso sobre cómo hacerlo: https://stackoverflow.com/a/56091158/5365164
fuente
En mi caso, fue un error tonto, asegúrese de que su applicationId en firebase como: 'com.example.appname' coincida exactamente con el applicationId en su archivo app / src / build.gradle, bajo defaultConfig {}. No hay errores de ortografía , no hay conflictos entre mayúsculas y minúsculas. En mi caso, una letra era mayúscula, lo que causó todos los problemas.
fuente
En android / app / build.gradle cambié las dependencias de com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 a com.android.tools.build:gradle : 3.2.1 / com.google.gms: google-services: 4.2.0 . Y funcionó.
fuente
Mientras registraba la aplicación en Firebase, cambié mi applicationId a algo que se adapte a mi aplicación. Sin embargo, esto resultó en la instalación de una segunda aplicación Flutter en mi teléfono cuando ejecuté el depurador (por supuesto, debido al cambio en applicationId). Entonces, lo que funcionó para mi situación fue
remove
tanto para las instalaciones como parare-install
la aplicación.fuente
Probé todo lo anterior y nada funcionó. Mi error fue que tenía varias carpetas de la versión de Android Studio en mi disco y estaba introduciendo la clave SHA1 incorrecta en la configuración de la base de fuego.
fuente
Crear un paquete de aplicaciones (recomendado por Google Play y Flutter) provocará este error. La construcción de una apk resolverá esto.
Ver problema 58194425
fuente
Tuve el problema y tardé 5 horas en resolverlo. Recuerdo que leí en alguna parte que API Exception 10 significa que hay un problema con las huellas digitales. Por lo tanto, tenía que ser el almacén de claves o una configuración incorrecta en firebase. Finalmente, fue el almacén de claves. Todavía no estoy seguro de por qué funcionó, pero esto es lo que hice, por cierto, estoy usando Windows 10:
1.) Asegúrese de que en el archivo android / build.gradle tuviera lo siguiente:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.2.0' } }
2.) Agregué estas dos líneas al archivo android / gradle.properties
android.useAndroidX=true android.enableJetifier=true
3.) Navegó a C: \ Users \ YOURUSER \ .android y eliminó lo siguiente:
4.) Abra el terminal como administrador y generó el almacén de claves de depuración en este directorio.
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
Obtuvo las huellas dactilares:
5.) Se agregaron las huellas digitales SHA1 a la configuración en firebase
Eso fue todo de mi parte. Espero que esto ayude a alguien.
fuente
Asegúrese de que los certificados de firma que está usando en la consola de firebase sean los mismos que se usan en signingConfigs >> configuración de depuración en el archivo app / build.gradle mientras aún está en desarrollo. La falta de coincidencia provoca un error.
fuente
Esto me lo arregló. Hice una pequeña refactorización en un nuevo proyecto. Pensé que estaba usando mi
google-services.json
archivo anterior, pero había estado usando el archivo incorrecto. Intenté todo lo demás durante dos días antes de darme cuenta de este simple error.fuente
Esto me ayudó (fue un problema al importar el SHA1)
cd .android usé y copié la clave SHA1 y la pegué en firebase, configuración del proyecto, aplicación de Android, certificado SHA
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
y creé también una clave más con:
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048 -validity 10000
y usé esto para tomar una clave SHA más:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android
Copié y pegué agregando una clave más en mi proyecto de base de fuego.
También descargué google-services.json y lo pegó en Android / app dentro del proyecto flutter.
Esto funcionó correctamente, mis dependencias 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
mi código:
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"); }
Espero que esto funcione.
fuente
Por favor asegúrese de hacer esto:
Habilite el inicio de sesión de Google desde su consola de base de fuego
Coloque su SHA-1 cuando configure su aplicación de base de fuego de Android
fuente
Recibo este error: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 :, null) Quizás la solución sea buena para usted.
Y me doy cuenta de que mi dispositivo de depuración (modo de depuración de Android) no está conectado a Internet. Creo que la autenticación falla, por lo que el método devuelve nulo o el usuario es igual a nulo.
La variable devuelta debe comprobarse antes de usarla.
fuente
En mi caso, ninguna de las respuestas resolvió el problema. Después de pensarlo un poco, me di cuenta de que hace algún tiempo había cambiado el nombre del paquete de mi aplicación . Si es su caso, simplemente debe crear otra aplicación dentro de su proyecto de Firebase con su nuevo nombre de paquete y descargar el archivo google-services.json nuevamente.
fuente
Sin embargo, las respuestas dadas anteriormente son correctas, pero aún así, si tiene algún problema, no olvide verificar la sección signingConfig {} de la aplicación / build.gradle. No debería tener ninguna referencia de archivo de almacén de claves no deseada, lo que puede causar una discrepancia con google-services.json y el almacén de claves.
fuente
Si su aplicación publicada no funciona correctamente y está utilizando la firma de Google Play, copie el SHA de su cuenta de Play Store , el de su clave local no funcionará
fuente