Flatter- und google_sign_in-Plugin: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 10 :, null)


95

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!


Für alle: Achten Sie auf den Ausnahmecode ApiException: 10und 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.
Kirill Karmazin

Führen Sie ./gradlew signingReport aus, es befindet sich im Android-Ordner der App. Fügen Sie SHA1 in der Google Firebase Google Sign in-Konfiguration hinzu. developer.google.com/android/guides/client-auth . Sie benötigen einen SHA1 für jeden Computer, an dem Sie arbeiten.
Live-Love

@ KirillKarmazin eine Idee, was 12500 ist? E / flutter (23795): [FEHLER: flutter / lib / ui / ui_dart_state.cc (157)] Nicht behandelte Ausnahme: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500 :, null)
Raiton

Antworten:


144

Ich stoße gerade auf das gleiche Problem. Dies könnte passiert , wenn Sie auf Debug ausführen , und Sie haben nicht einen registrieren SHAFingerabdruck in Feuerbasis . Ich habe es gelöst, indem ich ein generiert debug.keystoreund es in der App auf Firebase registriert habe. Vergessen Sie nicht, das neue google-services.jsondanach herunterzuladen . Siehe auch dies .

Geben Sie hier die Bildbeschreibung ein

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-auth

Wenn 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.

Geben Sie hier die Bildbeschreibung ein


18
Danke dafür. Das hat geholfen. Es ist erwähnenswert, dass sowohl die SHA1- als auch die SHA256-Schlüssel hinzugefügt werden mussten, damit die
Authentifizierung

2
Akzeptiere dies als Antwort.
Muruganandham K

@TSR das hat funktioniert, aber ich musste keine neue google-services.json herunterladen.
Darren Cole

2
Zu Ihrer Information, ich hatte den gleichen Fehler, auch nachdem ich meine sha-Fingerabdrücke konfiguriert hatte. Es stellte sich heraus, dass ich auch eine Support-E-Mail-Adresse per github.com/flutter/flutter/issues/25909#issuecomment-497378619 hinzufügen musste .
Michael Nelson

@ Michael Nelson, das war auch mein Problem
wwwwwwwwwww

38

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


8
sauber ist sehr wichtig
mkkhedawat

25

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.

Support-E-Mail für öffentliche Einstellungen


21

Sie müssen Ihr Google Cloud Api-Projekt mit Ihrem Paket konfigurieren.

https://developers.google.com/identity/sign-in/android/start-integrating#configure_a_project

Stellen Sie sicher, dass Sie mit demselben Konto von Firebase angemeldet sind

  1. Wählen Sie Ihr Firebase-Projekt aus
  2. Wählen Sie Android
  3. Öffnen Sie das Terminal in Ihrem Flatterprojekt
  4. cd android
  5. ./gradlew signingReport oder gradlew signingReport
  6. Fügen Sie Ihren Paketnamen und Ihren SHA1-Schlüssel ein
  7. Laden Sie die Kundeninformationen herunter
  8. Laden Sie die herunter und ersetzen Sie sie google-services.json
  9. flutter clean

IOS:

  1. Wählen Sie Ihr Firebase-Projekt aus
  2. Wählen Sie IOS
  3. Geben Sie Ihre Bundle-ID ein
  4. Anmeldeinformationen herunterladen
  5. Herunterladen und ersetzen GoogleService-info.plist

2
gradlew signingReport hilft mir sehr, weil ich zuerst nur den falschen Keystore benutze. Und mit diesem Befehl erhalten Sie definitiv den richtigen.
BHuelse

17

Ich habe ewig versucht, das zu beheben.

1. Öffnen Sie grade.properties Diese Datei befindet sich unter: {{IHR PROJEKT}} / android / gradle.properties

Geben Sie hier die Bildbeschreibung ein

2. Fügen Sie 'org.gradle.jvmargs' das folgende Argument hinzu, wie im Screenshot gezeigt.

-XX: MaxHeapSize = 256 m -Xmx256 m

Geben Sie hier die Bildbeschreibung ein

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

Geben Sie hier die Bildbeschreibung ein

4. Geben Sie den folgenden Befehl ein.

gradlew signingReport

Wenn es zuerst nicht funktioniert hat, versuchen Sie es mit dem zweiten Befehl:

./gradlew signingReport

5. Warten Sie, bis die Kompilierung abgeschlossen ist und Ihre SHA-Schlüssel für Sie ausgedruckt sind.

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie diese Schlüssel, um Ihre App unter https://console.firebase.google.com/ zu authentifizieren.


1
Für mich ist das das einzige, was funktioniert hat. Mein Keytool hat SHA-1 / SHA-256
PRO GRAMMER

4
Wenn Schritt 4 nicht funktioniert hat, rufen Sie stattdessen gradlew folgendermaßen auf: ./gradlew signingReport
Tincho825

1
Zu sagen, dass dies auch das einzige ist, was für mich funktioniert hat. Versuchte alles andere und verbrachte Tage damit, das Problem zu lösen, bevor ich es fand.
Mark Rawlingson

Diesen Fehler erhalten: Die Klasse org.codehaus.groovy.runtime.InvokerHelper
Ramis konnte

Dies ist die einfachste Methode! dies sollte akzeptiert werden.
Reverie_ss

11

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

Aktivieren der Google-Anmeldemethode in der Firebase-Konsole


7

Zusätzliche Schritte, die Sie möglicherweise ausführen müssen, damit google_sign_in funktioniert:

] [2]

  • Wenn Sie Google Sign In während des Debuggens ausführen können, jedoch NICHT in der Version, besteht eine hohe Wahrscheinlichkeit, dass Sie SHA1 und SHA256 Ihres Release-Schlüssels nicht zur Firebase hinzugefügt haben. Verwenden Sie, um die SHAs des Freigabeschlüssels abzurufenkeytool -list -v -keystore ~/key.jks -alias key

KonsoleAm 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.

Feuerbasis

# 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.**

7

Sie haben den Konfigurationsschritt verpasst. Aktivieren Sie die Google-Anmeldung auf Firebase.

Die Google-Anmeldung wird automatisch auf Ihren verbundenen iOS- und Web-Apps konfiguriert. Um die Google-Anmeldung für Ihre Android-Apps einzurichten, müssen Sie den SHA1-Fingerabdruck für jede App in Ihren Projekteinstellungen hinzufügen.

✅ Führen Sie einfach die folgenden Schritte aus

  1. Aktivieren Sie die Google Auth-Methode
  2. Konfigurieren Sie Zertifikatfingerabdrücke in Ihrem aktuellen Projekt unter project-level setting. So generieren Sie ein Zertifikat .
  3. Wählen Sie E-Mail für Projekt-Support-E-Mail
  4. google-service.jsonIn Ihr Projekt herunterladen .
  5. Lauf flutter clean
  6. Start flutter run

Bild


6

"Flutter clean" ist das Stück, das jeder vermisst, nachdem er den SHA1 in der Firebase Console registriert hat!


3

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:

  1. Navigieren Sie zur Google API-Konsole (derzeit unter https://console.developers.google.com ) und stellen Sie sicher, dass Sie in Ihrem Konto angemeldet sind, unter dem Ihr Firebase-Projekt erstellt wurde.
  2. Wählen Sie Ihr Projekt aus der Dropdown-Liste "Projekt auswählen" oben links in der Entwicklerkonsole aus.
  3. Gehen Sie im linken Bereich zu "Anmeldeinformationen" und wechseln Sie dann zum "OAuth-Zustimmungsbildschirm".
  4. Geben Sie unter "Anwendungsname" den öffentlichen Namen Ihrer Anwendung ein
  5. Laden Sie unter "Anwendungslogo" eine lokale Bilddatei Ihrer Anwendung hoch
  6. Geben Sie unter "Support-E-Mail" dieselbe Support-E-Mail ein, die in Ihrer Firebase-Anwendung aufgeführt ist.

Ihr Bildschirm sollte nun in Schritt 6 wie in diesem Beispiel aussehen

  1. Scrollen Sie nach unten und füllen Sie den Link "Application Homepage Link", "Link zum Datenschutz der Anwendung" und "Link zu den Nutzungsbedingungen der Anwendung" aus, indem Sie vor der autorisierten Domain, in der sich Ihre Firebase-App befindet , http: // hinzufügen .

Hier ist ein hervorgehobenes Beispiel dafür, wie diese Regionen in Schritt 7 ausgefüllt werden sollten

  1. Klicken Sie auf Speichern

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


Ist es tatsächlich eine Antwort auf die Frage?
Bulat

Danke für die Bewertung. Ich habe versucht, meine Antwort genauer zu aktualisieren - bitte lassen Sie mich wissen, ob sie jetzt angemessen ist - und wenn nicht, wie ich sie verbessern kann.
Ben Elliott

1
Müssen Sie "Zur Überprüfung einreichen" oder nur "Speichern"?
Einfacher

3

Versuchen Sie für Plattformausnahme 10 Folgendes:

  1. Generieren Sie einen neuen SHA1-Fingerabdruck auf Ihrem Computer.
  2. Wechseln Sie in der Firebase-Konsole zu Ihrer Firebase-Android-App-Einstellung
  3. Klicken Sie in den Einstellungen Ihrer Android-App auf Neuen Fingerabdruck hinzufügen
  4. Fügen Sie den neuen SHA1-Fingerabdruck in das Feld ein
  5. Generieren Sie eine neue JSON-Konfigurationsdatei
  6. Ersetzen Sie die Konfigurationsdatei im Android-Verzeichnis
  7. Flatter sauber laufen lassen
  8. Führen Sie Ihr Projekt aus

2

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).


wo aktiviere ich thant?
Ahmed Albarody

@AhmedAlbarody Wählen Sie in Ihrer Firebase-Konsole die Authentifizierung aus, und aktivieren Sie die Dienste, die Sie verwenden möchten.
Guy

1

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


1

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.


1

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 .



1

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.


0

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.


0

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 removesowohl die Installation als auch re-installdie App.


0

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.


0

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


0

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:

debug.keystore
debug.keystore.lock

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:

$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android 

5.) Die SHA1-Fingerabdrücke wurden der Konfiguration in Firebase hinzugefügt

Das war es an meinem Ende. Ich hoffe es hilft jemandem.


0

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.


0

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.jsonDatei verwenden, aber ich habe die falsche Datei verwendet. Ich habe zwei Tage lang alles andere ausprobiert, bevor ich diesen einfachen Fehler bemerkte.


0

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.



0

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.


Es fällt mir schwer, Ihrer Antwort zu folgen: Können Sie Hilfe bei der Verwendung von Englisch (nicht meiner Muttersprache) erhalten?
Graubart

0

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.


0

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.


0

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 Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.