La boîte de dialogue (formulaire Google) pour les informations d'identification est ouverte avec succès, mais après avoir rempli mes informations d'identification, j'obtiens cette erreur. J'ai suivi les instructions d' ici . Création d'un projet Firebase, activation de l'API Google Drive (c'est ce dont j'ai besoin pour l'instant) à partir de la console des API Google.
Le code lançant l'exception:
[â] 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.
C'est la trace de la pile:
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 version du plugin google_sign_in est 4.0.0.
C'est le résultat de flutter doctot -v :
final GoogleSignIn _googleSignIn = GoogleSignIn( scopes: [ 'https://www.googleapis.com/auth/drive', ], ); await _googleSignIn.signIn();
Toute aide sera très appréciée. Merci!
32 Réponses :
Dans android / app / build.gradle, j'ai changé les dépendances de com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 en com.android.tools.build:gradle : 3.2.1 / com.google.gms: google-services: 4.2.0 . Et ça a marché.
Je rencontre le même problème tout à l'heure. Cela peut se produire si vous exécutez le débogage et que vous n'avez pas enregistré d'empreinte SHA
dans Firebase. Je l'ai résolu en générant un debug.keystore
et en l'enregistrant dans l'application sur Firebase. N'oubliez pas de télécharger le nouveau google-services.json
après cela. Voir aussi ceci .
Modifier Si vous ne parvenez pas à utiliser l'authentification en mode version, essayez ce qui suit:
-Ajouter les empreintes digitales du certificat SHA de la clé de libération.
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
Pour plus de détails à ce sujet, consultez la section "get release certificate"
https://developers.google.com/android/guides/client-auth
Si votre authentification ne fonctionne toujours pas, c'est probablement parce que vous avez téléchargé l'application sur Playstore et que vous avez activé la fonctionnalité "Signature d'application par Google Play". Dans ce cas, accédez à la console de publication de Play Store et accédez à la signature d'applications dans la gestion des versions. Vous y trouverez l'empreinte du certificat SHA à enregistrer dans la console Firebase.
Merci pour cela. Cela a aidé. Il convient de noter que les clés SHA1 et SHA256 ont dû être ajoutées pour que l'authentification fonctionne
Acceptez ceci comme réponse.
@TSR cela a fonctionné mais je n'ai pas eu à télécharger un nouveau google-services.json.
FYI, j'ai eu la même erreur même après avoir configuré mes empreintes digitales sha. Il s'avère que j'ai également dû ajouter une adresse e-mail d' assistance par github.com/flutter/flutter/issues/25909#issuecomment-4973786 19 .
@MichaelNelson c'était aussi mon problème
Merci pour ça
Où trouvez-vous <path-to-production-keystore>? Comment créez-vous ce fichier?
Seul SHA1 est nécessaire.
Étapes supplémentaires que vous devrez peut-être suivre pour que google_sign_in fonctionne:
keytool -list -v -keystore ~/key.jks -alias key
Vous devriez vous retrouver avec un total d' au moins 6 informations d'identification SHA : 2 de la clé de débogage, 2 de la liaison Google Play et 2 de la clé de libération. Notez que vous n'avez pas besoin de retélécharger le fichier google-services.json après avoir ajouté les informations d'identification SHA de la version à 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.**
Lors de l'enregistrement de l'application dans Firebase, j'ai changé mon applicationId en quelque chose qui convient à mon application. Cependant, cela a entraîné l'installation d'une deuxième application Flutter sur mon téléphone lorsque j'ai exécuté le débogueur (bien sûr, en raison du changement dans applicationId). Donc, la chose qui a fonctionné pour ma situation, était de remove
deux installations et de re-install
l'application.
J'ai tout essayé ci-dessus et rien n'a fonctionné. Mon erreur a été que j'avais plusieurs dossiers de version de studio Android dans mon lecteur et que j'alimentais une mauvaise clé SHA1 dans les paramètres de Firebase.
L'une des raisons pour lesquelles vous pourriez rencontrer cette erreur est que vous n'avez pas rempli le formulaire de consentement OAuth de Google. Il s'agit d'une nouvelle modification apportée à Firebase.
Voici les étapes à suivre pour remplir le formulaire de consentement pour votre application:
Votre écran devrait maintenant ressembler à cet exemple à l'étape 6
Voici un exemple mis en évidence de la façon dont ces régions doivent être remplies à l'étape 7
Ces étapes ont fonctionné pour moi! Bien que le lien n'existe peut-être pas encore, j'aimerais référencer la source de cette solution ici
Est-ce vraiment une réponse à la question?
Merci pour votre retour. J'ai essayé de mettre à jour ma réponse pour être plus précise - s'il vous plaît laissez-moi savoir si elle est maintenant appropriée - et si non, comment je peux l'améliorer.
Avez-vous besoin de «Soumettre pour vérification» ou simplement «Enregistrer»?
La solution suivante fonctionne dans le projet Flutter:
Étape 1: Générez les clés SHA1 et SHA256 .
Étape 2: Ajoutez à la fois le SHA1 et le SHA256 à Firebase. (dans les paramètres de votre application)
Étape 3: Téléchargez google-services.json sur android / app dans le dossier de votre projet.
Étape 4: Dans votre terminal, exécutez la commande flutter clean
.
Étape 5: Exécutez votre application Flutter.
Pour plus d'informations, visitez:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup
propre est très important
"Flutter clean" c'est le morceau qui manque à tout le monde après avoir enregistré le SHA1 dans Firebase Console!
Assurez-vous que SHA-1 doit être une clé de débogage qui est générée uniquement dans votre système, puis téléchargez le fichier google-services.json et ajoutez-le à votre projet
assurez-vous d'avoir ajouté
apply plugin: 'com.google.gms.google-services'
dans android / build.gradle et
dependencies { classpath 'com.google.gms:google-services:4.2.0' }
dans android / app / build.gradle . Assurez-vous également que applicationId dans android / app / build.gradle est le même que le nom de votre package dans AndroidManifest.xml (vous pouvez parfois oublier de changer applicationId après avoir changé le nom du package). Cet applicatioonId ou nom de package dans le fichier manifeste doit être le nom de votre nom de package Android dans l'application Firebase.
Vous devez générer SHA-1 et SHA-256 pour chaque PC que vous avez utilisé. Et ajoutez-les tous aux paramètres du projet Firebase.
Et vous devez remplir le formulaire dans l'onglet Consentement OAuth .
La création d'un appbundle (qui est recommandé par Google Play et Flutter) provoquera cette erreur. Construire un apk résoudra ce problème.
Voir numéro 58194425
J'ai eu le problème et j'ai mis 5 heures pour le résoudre. Je me souviens avoir lu quelque part que l'exception API 10 signifie qu'il y a un problème avec les empreintes digitales. Donc, il devait s'agir du keystore ou d'une mauvaise configuration dans Firebase. Finalement, c'était le keystore. Je ne sais toujours pas pourquoi cela a fonctionné, mais c'est ce que j'ai fait, au fait, j'utilise Windows 10:
1.) Assurez-vous que sur le fichier android / build.gradle j'avais ce qui suit:
$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
2.) J'ai ajouté ces deux lignes au fichier android / gradle.properties
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
3.) Accédez à C: \ Users \ YOURUSER \ .android et supprimez les éléments suivants:
debug.keystore debug.keystore.lock
4.) Ouvrez le terminal en tant qu'administrateur et générez le fichier de clés de débogage dans ce répertoire.
android.useAndroidX=true android.enableJetifier=true
Obtention des empreintes digitales:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.2.0' } }
5.) Ajout des empreintes digitales SHA1 à la configuration dans Firebase
C'était tout de mon côté. J'espère que cela aide quelqu'un.
Veuillez vous assurer que les certificats de signature que vous utilisez sur la console Firebase sont identiques à ceux utilisés dans la configuration de débogage de signatureConfigs >> dans le fichier app / build.gradle alors qu'il est encore en développement. Missmatch provoque une erreur.
Vous devez configurer votre projet Google Cloud Api avec votre package.
https://developers.google.com/identity/sign-in/android/start-integrating#configure_a_project
Assurez-vous d'être connecté avec le même compte Firebase
cd android
./gradlew signingReport
ou gradlew signingReport
google-services.json
flutter clean
IOS:
GoogleService-info.plist
gradlew signatureReport m'aide beaucoup, car j'utilise d'abord le mauvais keystore. Et avec cette commande, vous obtenez certainement la bonne.
Cela a résolu le problème pour moi. J'ai fait un petit refactor dans un nouveau projet. Je pensais utiliser mon ancien fichier google-services.json
, mais j'avais utilisé le mauvais fichier. J'ai tout essayé pendant deux jours avant de réaliser cette simple erreur.
Cela peut sembler idiot, mais cela m'est arrivé maintenant (après avoir travaillé avec Firebase dans le passé). J'ai remarqué que je n'ai pas activé l'authentification Google. Assurez-vous de le faire, car vous pourriez toujours voir l'invite de connexion (vous montrant les utilisateurs Google de votre téléphone, sans qu'elle soit activée).
où puis-je activer thant?
@AhmedAlbarody Dans votre console Firebase - choisissez l'authentification, puis vous devez activer les services que vous souhaitez utiliser.
Cela m'a aidé (c'était un problème lors de l'importation du SHA1)
cd .android j'ai utilisé et copié la clé SHA1 et collée dans firebase, configuration du projet, application android, certificat SHA
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
et j'ai également créé une clé supplémentaire avec:
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048 -validité 10000
et utilisé ceci pour prendre une clé SHA supplémentaire:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android
J'ai copié et collé en ajoutant une clé supplémentaire dans mon projet Firebase.
également téléchargé le google-services.json et collé dans Android / app à l'intérieur du projet Flutter.
Cela a fonctionné correctement, mes dépendances pubspec.yml:
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"); }
mon code:
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
J'espère que ce travail.
Veuillez vous assurer de faire ceci:
Activez la connexion à Google depuis votre console Firebase
Mettez votre SHA-1 lors de la configuration de votre application Android Firebase
Vous avez manqué l'étape de configuration Activer la connexion Google sur Firebase.
La connexion à Google est automatiquement configurée sur vos applications iOS et Web connectées. Pour configurer la connexion Google pour vos applications Android, vous devez ajouter l'empreinte digitale SHA1 de chaque application dans les paramètres de votre projet.
✅ Suivez simplement ces étapes ci-dessous
project-level setting
. Comment générer un certificat .google-service.json
dans votre projet.flutter clean
flutter run
J'obtiens cette erreur: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 :, null) Peut-être que la solution est bonne pour vous.
Et je me rends compte que mon périphérique de débogage (mode de débogage Android) n'est pas connecté à Internet. Je pense que l'authentification a échoué, donc la méthode renvoie null ou l'utilisateur égal à null.
La variable retournée doit être vérifiée avant utilisation.
J'ai du mal à suivre votre réponse: pouvez-vous obtenir de l'aide en utilisant l'anglais (pas ma première langue)?
J'ai passé des siècles à essayer de résoudre ce problème.
1. Ouvrez grade.properties Ce fichier se trouve sous: {{VOTRE PROJET}} / android / gradle.properties
2. Ajoutez l'argument suivant à «org.gradle.jvmargs» comme indiqué dans la capture d'écran.
-XX: Taille MaxHeap = 256 m -Xmx256 m
3. Faites un clic droit sur "gradlew" et allez dans "Ouvrir dans le terminal". Ce fichier se trouve sous {{VOTRE PROJET}} / android / gradlew
4. Tapez la commande suivante.
./gradlew signingReport
Si cela ne fonctionne pas, essayez d'abord la deuxième commande:
gradlew signingReport
5. Attendez la fin de la compilation et vos clés SHA devraient être imprimées pour vous.
Utilisez ces clés pour authentifier votre application sur https://console.firebase.google.com/
Pour moi, c'est la seule chose qui a fonctionné, mon keytool généré ne fonctionne pas SHA-1 / SHA-256
Si l'étape 4 n'a pas fonctionné, appelez plutôt gradlew comme ceci: ./gradlew signatureReport
Sonnerie pour dire que c'est aussi la seule chose qui a fonctionné pour moi. J'ai tout essayé et passé des jours à essayer de résoudre le problème avant de le trouver.
Obtention de cette erreur: impossible d'initialiser la classe org.codehaus.groovy.runtime.InvokerHelper
c'est la méthode la plus simple! cela devrait être accepté.
La meilleure réponse. Parfait.
Pour l'exception de plate-forme 10, essayez ceci:
Dans mon cas, aucune des réponses n'a résolu le problème. Après réflexion, je me suis rendu compte qu'il y a quelque temps, j'avais changé le nom du package de mon application . Si c'est votre cas, vous devez simplement créer une autre application dans votre projet Firebase avec votre nouveau nom de package et télécharger à nouveau le fichier google-services.json.
Si cela fonctionnait auparavant mais que vous utilisez maintenant un autre PC, vous devrez ajouter de nouvelles empreintes digitales SHA-1 / SHA-256 générées par ce PC à votre projet dans Firebase . Un bon exemple étape par étape pour faire cela: https://stackoverflow.com/a/56091158/5365164
Cependant, les réponses données ci-dessus sont correctes, mais si vous rencontrez un problème, n'oubliez pas de vérifier la section signatureConfig {} de l'application / build.gradle. Il ne doit contenir aucune référence de fichier de keystore indésirable, ce qui peut provoquer une incompatibilité avec google-services.json et le keystore.
Dans mon cas, c'était une erreur stupide, assurez-vous que votre applicationId dans Firebase comme: 'com.example.appname' correspond exactement à l'applicationId dans votre fichier app / src / build.gradle, sous defaultConfig {}. Aucune faute d'orthographe , pas de majuscules, conflits de lettres minuscules.Dans mon cas, une lettre était en majuscule, ce qui a causé tous les problèmes.
En plus des étapes suggérées par d'autres exécutant ./gradlew clean
fonctionné pour moi.
J'ai aussi eu le même problème.
- J'avais réglé l'écran de consentement.
- Ajout de google_play_services.json
- avait activé la connexion à Google
- ajout du plugin requis dans le flutter
mais cela ne fonctionnait pas, j'obtenais la même erreur API Exception-10, gsm
après avoir ajouté SHA1, il a commencé à fonctionner
À tous: faites attention au code d'exception
ApiException: 10
et reportez-vous d'abord à la documentation - developer.google.com/android/reference/com/google/android/g ms /… Assurez-vous de résoudre le bon problème. Par exemple, le code 7 signifierait simplement «pas de connexion Internet».Exécutez ./gradlew signatureReport, il se trouve dans le dossier Android de l'application. Ajoutez SHA1 dans la configuration de connexion Google Firebase. développeurs.google.com/android/guides/client-auth . Vous aurez besoin d'un SHA1 pour chaque ordinateur sur lequel vous travaillez.
@KirillKarmazin une idée de ce qu'est 12500? E / flutter (23795): [ERREUR: flutter / lib / ui / ui_dart_state.cc (157)] Exception non gérée: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)