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, je reçois cette erreur. J'ai suivi les instructions de 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 levant l'exception:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
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 la sortie 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.
Toute aide sera très appréciée. Merci!
Je rencontre le même problème tout à l'heure. Cela peut se produire si vous utilisez le débogage et que vous n'avez pas enregistré une empreinte SHA
dans Firebase. Je l'ai résolu en générant un debug.keystore
et l'enregistrer dans l'application sur Firebase. N'oubliez pas de télécharger le nouveau google-services.json
après ça. Voir aussi this .
Modifier Si vous ne pouvez pas utiliser l'authentification en mode de libération, essayez ce qui suit:
-Ajouter les empreintes digitales du certificat SHA de la clé de libération).
keytool -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>
Pour plus de détails à ce sujet, voir ici dans 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 depuis Playstore et que vous avez activé la "Signature de l'application par la fonction Google Play" Puis pour dans ce cas, accédez à la console de publication Play Store et accédez à la signature d'application sous la gestion des versions. Vous y trouverez l'empreinte digitale du certificat SHA à enregistrer dans la console Firebase.
La solution suivante fonctionne dans le projet flutter:
Étape 1: Générez SHA1 et SHA256 clés.
É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/application dans votre dossier de 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
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
"Flutter clean" c'est la pièce qui manque à tout le monde après avoir enregistré le SHA1 dans Firebase Console!
Étapes supplémentaires que vous devrez peut-être suivre pour que google_sign_in fonctionne:
keytool -list -v -keystore ~/key.jks -alias key
Vous devez vous retrouver avec un total de au moins 6 SHA : 2 à partir de la clé de débogage, 2 à partir de la liaison Google Play et 2 à partir de la clé de version. Notez que vous n'avez pas besoin de retélécharger le fichier google-services.json après avoir ajouté la version SHA credentials to 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.**
Cela peut sembler idiot, mais cela m'est juste arrivé maintenant (après avoir eu une certaine expérience de travail 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 l'activer).
Une des raisons pour lesquelles vous pouvez rencontrer cette erreur est que vous n'avez pas rempli le formulaire de consentement de google OAuth. Il s'agit d'une nouvelle modification de Firebase.
Voici les étapes que vous devez 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, je voudrais faire référence à la source de cette solution ici
Vous avez manqué l'étape de configuration, activez 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 à vos applications Android Android, vous devez ajouter l'empreinte SHA1 de chaque application dans les paramètres de votre projet.
✅ Complétez simplement ces étapes ci-dessous
project-level setting
. Comment générer un certificat .google-service.json
dans mon projet.flutter clean
flutter run
J'ai passé des heures à essayer de résoudre ce problème.
1. Ouvrez grade.properties Ce fichier se trouve sous: {{YOUR PROJECT}}/Android/gradle.properties
2. Ajoutez l'argument suivant à 'org.gradle.jvmargs' comme indiqué dans la capture d'écran.
-XX: MaxHeapSize\= 256m -Xmx256m
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
5. Attendez la fin de la compilation et vos clés SHA doivent être imprimées pour vous.
Utilisez ces clés pour authentifier votre application dans https://console.firebase.google.com/
Assurez-vous que SHA-1 doit être une clé de débogage générée uniquement dans votre système, puis téléchargez le fichier google-services.json en ajoutant cela à votre projet
Cela m'a arrangé. J'ai fait un petit refactor dans un nouveau projet. Je pensais que j'utilisais mon ancien google-services.json
fichier mais j'avais utilisé le mauvais fichier. J'ai essayé tout le reste pendant deux jours avant de réaliser cette simple erreur.
J'ai tout essayé ci-dessus et rien n'a fonctionné. Mon erreur était que j'avais plusieurs dossiers Android version studio dans mon lecteur et que j'alimentais une mauvaise clé SHA1 dans les paramètres de Firebase.
Cela m'a été aidé (c'était un problème lors de l'importation du SHA1)
cd .Android i utilisé et copié la clé SHA1 et collé dans firebase, configuration du projet, Android, 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 -validity 10000
et utilisé cela pour prendre un autre SHA clé:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass Android -keypass Android
j'ai copié et collé en ajoutant une clé de plus dans mon projet Firebase.
également téléchargé le google-services.json et collé dans Android/app dans le projet flutter.
Cela a fonctionné correctement, mes dépendances 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
mon code:
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");
}
J'espère que ce travail.
Dans Android/app/build.gradle j'ai changé les dépendances de com.Android.tools.build:gradle:3.1./com.google.gms : google-services: 3.2.1 à com.Android.tools.build:gradle:3.2.1/com.google.gms:google-services:4.2.. Et ça a marché.
Veuillez vous assurer de le faire:
Activer la connexion Google à partir de votre console Firebase
Mettez votre SHA-1 lors de la configuration de votre Android application firebase
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 d'applicationId). Donc, ce qui a fonctionné dans ma situation, c'était de remove
à la fois les installations et re-install
l'application.
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 OAuth Consent .
Veuillez vous assurer que les certificats de signature que vous utilisez sur la console Firebase sont les mêmes que ceux utilisés dans la configuration de débogage de signatureConfigs >> dans le fichier app/build.gradle pendant le développement. Missmatch provoque une erreur.
J'ai eu le problème et j'ai pris 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, ce devait être le magasin de clés ou une mauvaise configuration dans Firebase. Finalement, c'était le magasin de clés. Je ne sais toujours pas pourquoi cela a fonctionné, mais c'est ce que j'ai fait, d'ailleurs, j'utilise Windows 10:
1.) Assurez-vous que sur le fichier Android/build.gradle j'avais les éléments suivants:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
2.) J'ai ajouté ces deux lignes au fichier Android/gradle.properties
Android.useAndroidX=true
Android.enableJetifier=true
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.
$ keytool -genkey -v -keystore debug.keystore -storepass Android -alias androiddebugkey -keypass Android -keyalg RSA -keysize 2048 -validity 10000
Obtenu les empreintes digitales:
$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass Android -keypass Android
5.) Ajout des empreintes digitales SHA1 à la configuration dans Firebase
C'était de mon côté. J'espère que ça aide quelqu'un.
assurez-vous d'avoir ajouté
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
dans Android/build.gradle et
apply plugin: 'com.google.gms.google-services'
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 oublier de changer applicationId après avoir changé le nom du package parfois ). Ce nom d'application ou de package dans le fichier manifeste doit être le nom de votre Android dans l'application Firebase.
La création d'un ensemble d'applications (recommandé par Google Play et Flutter) provoquera cette erreur. Construire un apk résoudra cela.
Voir problème 58194425