Das Dialogfeld (Google-Formular) für die Anmeldeinformationen wurde erfolgreich geöffnet. Nachdem ich meine Anmeldeinformationen eingegeben habe, wird dieser Fehler angezeigt. Ich habe die Anweisungen von hier aus befolgt . Erstellt ein Firebase-Projekt und aktiviert die Google Drive-API (die ich jetzt benötige) über die Google APIs-Konsole.
Der Code, der die Ausnahme auslöst:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
Das ist die Stapelverfolgung:
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)
Die Version des google_sign_in- Plugins ist 4.0.0.
Das ist die Ausgabe von 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.
Jede Hilfe wird sehr geschätzt. Vielen Dank!
firebase
flutter
dart
firebase-authentication
google-signin
Boyan Bozhidarov
quelle
quelle
ApiException: 10
und lesen Sie zuerst die Dokumente - developer.google.com/android/reference/com/google/android/gms/…. Stellen Sie sicher, dass Sie das richtige Problem beheben. Zum Beispiel würde Code 7 nur "keine Internetverbindung" bedeuten.Antworten:
Ich stoße gerade auf das gleiche Problem. Dies könnte passiert , wenn Sie auf Debug ausführen , und Sie haben nicht einen registrieren
SHA
Fingerabdruck in Feuerbasis . Ich habe es gelöst, indem ich ein generiertdebug.keystore
und es in der App auf Firebase registriert habe. Vergessen Sie nicht, das neuegoogle-services.json
danach herunterzuladen . Siehe auch dies .Bearbeiten Wenn Sie die Authentifizierung im Freigabemodus nicht verwenden können, versuchen Sie Folgendes:
- Fügen Sie die Fingerabdrücke des SHA-Zertifikats des Freigabeschlüssels hinzu.
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
Weitere Informationen hierzu finden Sie hier im Abschnitt
"get release certificate"
https://developers.google.com/android/guides/client-authWenn Ihre Authentifizierung immer noch nicht funktioniert, liegt dies wahrscheinlich daran, dass Sie die App aus dem Playstore heruntergeladen und die Funktion "App-Signierung mit Google Play" aktiviert haben. Wechseln Sie in diesem Fall zur Play Store-Veröffentlichungskonsole und zur App-Signierung unter Release-Verwaltung. Dort finden Sie den SHA-Zertifikat-Fingerabdruck, der in der Firebase-Konsole registriert werden soll.
quelle
Die folgende Lösung funktioniert im Flatterprojekt:
Schritt 1: Generieren Sie die Schlüssel SHA1 und SHA256 .
Schritt 2: Fügen Sie SHA1 und SHA256 zur Feuerbasis hinzu. (in Ihren App-Einstellungen)
Schritt 3: Laden Sie google-services.json auf android / app in Ihrem Projektordner herunter .
Schritt 4: Führen Sie in Ihrem Terminal den Befehl aus
flutter clean
.Schritt 5: Führen Sie Ihre Flatter-App aus.
Weitere Informationen finden Sie unter:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup
quelle
Als ich auf dieses Problem stieß, habe ich alle anderen in diesem Beitrag beschriebenen Lösungen ausprobiert. Nichts davon hat funktioniert. Schließlich fand ich es heraus: In meiner Situation musste ich sicherstellen, dass meine "Support-E-Mail" eingestellt war.
quelle
Sie müssen Ihr Google Cloud Api-Projekt mit Ihrem Paket konfigurieren.
Stellen Sie sicher, dass Sie mit demselben Konto von Firebase angemeldet sind
cd android
./gradlew signingReport
odergradlew signingReport
google-services.json
flutter clean
IOS:
GoogleService-info.plist
quelle
Ich habe ewig versucht, das zu beheben.
1. Öffnen Sie grade.properties Diese Datei befindet sich unter: {{IHR PROJEKT}} / android / gradle.properties
2. Fügen Sie 'org.gradle.jvmargs' das folgende Argument hinzu, wie im Screenshot gezeigt.
-XX: MaxHeapSize = 256 m -Xmx256 m
3. Klicken Sie mit der rechten Maustaste auf "gradlew" und gehen Sie zu "Open in Terminal". Diese Datei befindet sich unter {{IHR PROJEKT}} / android / gradlew
4. Geben Sie den folgenden Befehl ein.
Wenn es zuerst nicht funktioniert hat, versuchen Sie es mit dem zweiten Befehl:
5. Warten Sie, bis die Kompilierung abgeschlossen ist und Ihre SHA-Schlüssel für Sie ausgedruckt sind.
Verwenden Sie diese Schlüssel, um Ihre App unter https://console.firebase.google.com/ zu authentifizieren.
quelle
Ich musste keine zusätzlichen SHAs hinzufügen. Mir wurde klar, dass ich die Google- Anmeldemethode auf der Registerkarte Authentifizierung in der Firebase-Konsole nicht aktiviert habe
quelle
Zusätzliche Schritte, die Sie möglicherweise ausführen müssen, damit google_sign_in funktioniert:
keytool -list -v -keystore ~/key.jks -alias key
Am Ende sollten Sie insgesamt mindestens 6 SHA-Anmeldeinformationen haben : 2 vom Debug-Schlüssel, 2 vom Google Play-Link und 2 vom Release-Schlüssel. Beachten Sie, dass Sie die Datei google-services.json nicht erneut herunterladen müssen, nachdem Sie die Release-SHA-Anmeldeinformationen zu firebase hinzugefügt haben.
# 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.**
quelle
Sie haben den Konfigurationsschritt verpasst. Aktivieren Sie die Google-Anmeldung auf Firebase.
✅ Führen Sie einfach die folgenden Schritte aus
project-level setting
. So generieren Sie ein Zertifikat .google-service.json
In Ihr Projekt herunterladen .flutter clean
flutter run
quelle
"Flutter clean" ist das Stück, das jeder vermisst, nachdem er den SHA1 in der Firebase Console registriert hat!
quelle
Ein Grund für diesen Fehler ist möglicherweise, dass Sie das OAuth-Einverständnisformular von Google nicht ausgefüllt haben. Dies ist eine neue Änderung an Firebase.
Hier sind die Schritte, die Sie ausführen müssen, um das Einverständnisformular für Ihre App auszufüllen:
Ihr Bildschirm sollte nun in Schritt 6 wie in diesem Beispiel aussehen
Hier ist ein hervorgehobenes Beispiel dafür, wie diese Regionen in Schritt 7 ausgefüllt werden sollten
Diese Schritte haben bei mir funktioniert! Während die Verbindung existiert nicht noch kann, würde Ich mag die Quelle dieser Lösung verweisen hier
quelle
Versuchen Sie für Plattformausnahme 10 Folgendes:
quelle
Das mag albern erscheinen, aber das ist mir gerade passiert (nachdem ich in der Vergangenheit einige Erfahrungen mit Firebase gesammelt habe). Ich habe festgestellt, dass ich die Google-Authentifizierung nicht aktiviert habe. Stellen Sie sicher, dass Sie dies tun, da möglicherweise immer noch die Anmeldeaufforderung angezeigt wird (die Ihnen die Google-Nutzer Ihres Telefons anzeigt, ohne dass diese aktiviert ist).
quelle
Stellen Sie sicher, dass SHA-1 ein Debug-Schlüssel ist, der nur in Ihrem System generiert wird, und laden Sie dann die Datei google-services.json herunter, die Sie an Ihr Projekt anhängen
quelle
Stellen Sie sicher, dass Sie hinzugefügt haben
dependencies { classpath 'com.google.gms:google-services:4.2.0' }
in android / build.gradle und
apply plugin: 'com.google.gms.google-services'
in android / app / build.gradle . Stellen Sie außerdem sicher, dass die Anwendungs- ID in android / app / build.gradle mit Ihrem Paketnamen in AndroidManifest.xml übereinstimmt (möglicherweise vergessen Sie manchmal, die Anwendungs- ID zu ändern, nachdem Sie den Paketnamen geändert haben). Diese Anwendungs-ID oder der Paketname in der Manifest-Datei sollte der Name Ihres Android-Paketnamens in der Firebase-App sein.
quelle
Sie sollten SHA-1 und SHA-256 für jeden von Ihnen verwendeten PC generieren. Und fügen Sie sie alle zu den Firebase-Projekteinstellungen hinzu.
Und Sie sollten das Formular auf der Registerkarte OAuth Consent ausfüllen .
quelle
Wenn es zuvor funktioniert hat, jetzt aber einen anderen PC verwendet, müssen Sie Ihrem Projekt in Firebase neue SHA-1 / SHA-256-Fingerabdrücke hinzufügen, die von diesem PC generiert wurden . Ein gutes Schritt-für-Schritt-Beispiel dazu: https://stackoverflow.com/a/56091158/5365164
quelle
In meinem Fall war es ein dummer Fehler. Stellen Sie sicher, dass Ihre Anwendungs-ID in Firebase wie folgt lautet: 'com.example.appname' stimmt genau mit der Anwendungs-ID in Ihrer Datei app / src / build.gradle unter defaultConfig {} überein. Keine Rechtschreibfehler , kein Großbuchstabe, Kleinbuchstabenkonflikte. In meinem Fall war ein Buchstabe Großbuchstabe, was alle Probleme verursachte.
quelle
In android / app / build.gradle habe ich die Abhängigkeiten von com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 in com.android.tools.build:gradle geändert : 3.2.1 / com.google.gms: google-services: 4.2.0 . Und es hat funktioniert.
quelle
Bei der Registrierung der App in Firebase habe ich meine Anwendungs-ID in etwas geändert, das zu meiner App passt. Dies führte jedoch dazu, dass eine zweite Flutter-App auf meinem Telefon installiert wurde, als ich den Debugger ausführte (natürlich aufgrund der Änderung der Anwendungs-ID). Das, was für meine Situation funktionierte, war
remove
sowohl die Installation als auchre-install
die App.quelle
Ich habe alles oben versucht und nichts hat funktioniert. Mein Fehler war, dass ich mehrere Ordner für die Android Studio-Version in meinem Laufwerk hatte und in den Firebase-Einstellungen einen falschen SHA1-Schlüssel eingegeben habe.
quelle
Das Erstellen eines Appbundles (das von Google Play und Flutter empfohlen wird) führt zu diesem Fehler. Das Erstellen einer apk wird dieses Problem beheben.
Siehe Ausgabe 58194425
quelle
Ich hatte das Problem und brauchte 5 Stunden, um es zu lösen. Ich erinnere mich, dass ich irgendwo gelesen habe, dass API-Ausnahme 10 bedeutet, dass ein Problem mit den Fingerabdrücken vorliegt. Es musste also der Keystore oder eine Fehlkonfiguration in der Firebase sein. Schließlich war es der Schlüsselspeicher. Ich bin mir immer noch nicht sicher, warum das funktioniert hat, aber ich habe übrigens Windows 10 verwendet:
1.) Stellen Sie sicher, dass ich in der Datei android / build.gradle Folgendes hatte:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.2.0' } }
2.) Ich habe diese beiden Zeilen zur Datei android / gradle.properties hinzugefügt
android.useAndroidX=true android.enableJetifier=true
3.) Navigierte zu C: \ Users \ YOURUSER \ .android und löschte Folgendes:
4.) Öffnen Sie das Terminal als Administrator und generieren Sie den Debug-Keystore in diesem Verzeichnis.
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
Erhalten Sie die Fingerabdrücke:
5.) Die SHA1-Fingerabdrücke wurden der Konfiguration in Firebase hinzugefügt
Das war es an meinem Ende. Ich hoffe es hilft jemandem.
quelle
Stellen Sie sicher, dass die Signaturzertifikate, die Sie auf der Firebase-Konsole verwenden, mit denen übereinstimmen, die in der Datei signingConfigs >> Debug-Konfiguration in der Datei app / build.gradle verwendet werden, während Sie sich noch in der Entwicklung befinden. Missmatch verursacht Fehler.
quelle
Das hat es für mich behoben. Ich habe einen kleinen Refactor in einem neuen Projekt gemacht. Ich dachte, ich würde meine alte
google-services.json
Datei verwenden, aber ich habe die falsche Datei verwendet. Ich habe zwei Tage lang alles andere ausprobiert, bevor ich diesen einfachen Fehler bemerkte.quelle
Dies wurde mir geholfen (war ein Problem beim Importieren des SHA1)
cd .android Ich habe den SHA1-Schlüssel verwendet und kopiert und in Firebase, Projektkonfiguration, Android-Anwendung, SHA-Zertifikat eingefügt
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
und ich habe auch noch einen Schlüssel erstellt mit:
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048 -validity 10000
und benutzte dies, um einen weiteren SHA-Schlüssel zu nehmen:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android
Ich habe einen weiteren Schlüssel in mein Firebase-Projekt kopiert und eingefügt.
Außerdem wurde die Datei google-services.json heruntergeladen und in Android / App in das Flatterprojekt eingefügt.
Das hat richtig funktioniert, meine pubspec.yml Abhängigkeiten:
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
Mein 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"); }
Ich hoffe diese Arbeit.
quelle
Bitte stellen Sie sicher, dass Sie dies tun:
Aktivieren Sie die Google-Anmeldung über Ihre Firebase-Konsole
Setzen Sie Ihren SHA-1 ein, wenn Sie Ihre Android Firebase App einrichten
quelle
Ich erhalte folgende Fehlermeldung: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 :, null) Vielleicht ist die Lösung gut für Sie.
Und mir ist klar, dass mein Debug-Gerät (Android-Debug-Modus) nicht mit dem Internet verbunden ist. Ich denke, die Authentifizierung ist fehlgeschlagen, daher gibt die Methode null oder den Benutzer null zurück.
Die zurückgegebene Variable muss vor der Verwendung überprüft werden.
quelle
In meinem Fall löste keine der Antworten das Problem. Nach einigem Nachdenken wurde mir klar, dass ich vor einiger Zeit den Paketnamen meiner Anwendung geändert habe . In diesem Fall sollten Sie einfach eine andere Anwendung in Ihrem Firebase-Projekt mit Ihrem neuen Paketnamen erstellen und die Datei google-services.json erneut herunterladen.
quelle
Die oben angegebenen Antworten sind jedoch korrekt. Wenn Sie jedoch ein Problem haben, vergessen Sie nicht, den Abschnitt signingConfig {} der app / build.gradle zu überprüfen. Es sollte keine unerwünschte Keystore-Dateireferenz enthalten, die zu einer Nichtübereinstimmung mit google-services.json und dem Keystore führen kann.
quelle
Wenn Ihre freigegebene App nicht ordnungsgemäß funktioniert und Sie Google Play Signing verwenden, kopieren Sie den SHA von Ihrem Play Store-Konto . Der von Ihrem lokalen Schlüssel funktioniert nicht
quelle