Google-Anmeldefehler 12500


106

Ich versuche, Google Sign In in meine App zu integrieren. Ich habe keinen Back-End-Server. Ich erhalte nur die Details des bei Google angemeldeten Kontos in meiner App.

Ich habe es zuerst mithilfe des Google-Anmeldebeispiels versucht, aber es ist eine Fehlermeldung aufgetreten (es wurden keine Codeänderungen vorgenommen, außer das Drucken der folgenden Stapelverfolgung). Ich habe gerade das Beispiel SignInActivity verwendet, da ich keinen Back-End-Server habe.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Code

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Nach dem, was ich gelesen habe, könnte das Problem durch die SHA1-Generation verursacht werden .

Ich habe die komplette Anleitung befolgt , aber anscheinend funktioniert es nicht.

Ich habe den SHA1 von gradle signingReport kopiert

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

Was könnte die mögliche Ursache dafür sein?

Vielen Dank

PS Könnte dies eine mögliche Ursache sein?

Google Play services out of date.  Requires 11720000 but found 10932470

Hey, kannst du bitte deinen Code posten
Dilip

Hallo @Dilip, ich habe das buchstäblich benutzt :) github.com/googlesamples/google-services/tree/master/android/… . Aktualisiert es trotzdem
Aaron

1
Also, was passiert, Sie bekommen den gleichen Fehler oder irgendetwas anderes passiert. Bitte machen Sie noch einmal SHA1 manuell und setzen Sie es an der Entwicklerkonsole gegen Ihre APP und überprüfen Sie den Paketnamen und laden Sie die Datei google-services.json herunter und setzen Sie sie auf App-Ebene.
Dilip

Ja @Dilip Ich bekomme den gleichen Fehler. Ich habe den geprüften Paketnamen gekreuzt. Ich habe sogar versucht, einen anderen Keystore zu verwenden, aber das Ergebnis ist das gleiche.
Aaron

Sie müssen Codeänderungen vornehmen, um Ihren API-Schlüssel zu erhalten. Und ja, Sie sollten die
Spieldienste

Antworten:


37

Aktualisieren Sie einfach Ihre Google Play-Dienste auf die neueste Version (oder in diesem Fall 11720000). Wenn Sie AVD verwenden, unterstützen Nexus 5- und 5X-Bilder Google Play. Sobald der Emulator betriebsbereit ist, rufen Sie das Menü Erweiterte Steuerelemente> Google Play auf und aktualisieren Sie ihn.


Wie geht das auf Samsung-Geräten?
Pinkesh Darji

7
Dies ist in meinem Fall nicht das Problem. Die Google Play-Dienste sind bereits auf dem neuesten Stand.
Adam Hurwitz

Die Lösung von @ zub0r in Bezug auf Projekt- und Datenschutzlinks sollte als richtige Antwort akzeptiert werden.
Adam Hurwitz

Bitte wo ist das erweiterte Steuerungsmenü, auf dem Emulator oder in Visual Studio?
George Udosen

120

Fehler PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500 :, null)

Dieser 12500-Fehler kann behoben werden, indem Sie Ihrem Projekt in den Projekteinstellungen eine Support-E-Mail-Adresse hinzufügen . Öffnen Sie den Link https://console.firebase.google.com/

Wählen Sie Ihr Projekt und öffnen Sie die Registerkarte Einstellungen.

Stellen Sie eine gültige Support-E-Mail bereit und starten Sie Ihre Anwendung jetzt neu.

Geben Sie hier die Bildbeschreibung ein


9
Danke, Mann! Dieser Fehler ist ziemlich kryptisch, er kann alles bedeuten, was in den Antworten hier erwähnt wird. Mein Problem war dieses :(
Billda

3
Ich habe alles getan, was in der Entwicklerkonsole Developers.google.com/identity/sign-in/android/sign-in erwähnt wurde, und nachdem ich einen Tag damit verbracht hatte, SHA-1-Fingerabdrücke zu platzieren, war dies alles das Problem. Du hast geholfen. Vielen Dank!
Klasse Android

Versuchen Sie, SHA1-Schlüssel für Ihr Projekt @RohitSingh
Maddu Swaroop

1
@ MadduSwaroop Wenn es nur eine Möglichkeit gäbe, zweimal zu stimmen ... danke Sir
Lefty

1
Du hast meinen Tag gerettet
Houssem

46

Überprüfen Sie, ob SHA-1-Fingerabdrücke zu den Firebase-Projekteinstellungen hinzugefügt wurden. Wenn nicht, suchen Sie den SHA-1-Fingerabdruck mit

https://developers.google.com/android/guides/client-auth

Finden Sie auch den SHA-1-Fingerabdruck des Freigabeschlüssels mit

keytool -list -v -keystore <keystore path>

Entfernen Sie <keystore path>mit dem Pfad des Schlüsselspeichers.

Fügen Sie dann beide SHA-1-Fingerabdrücke zu den Einstellungen der Firebase-Projekte hinzu.

NB: Vergessen Sie nicht, google-services.json durch aktualisierte google-services.json durch neue Fingerabdrücke zu ersetzen. Ich habe zwei Tage verloren.

Während des Debuggens

Android Studio generiert ~/.android/debug.keystore beim ersten Debug-Build automatisch und signiert damit die App.

So führen Sie den SHA-1-Lauf aus (Kennwort android) ( doc ):

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Dies SHA-1sollte zu den App-Einstellungen unter hinzugefügt werden, firebaseum die Verwendung der Google-Anmeldefunktionen beim Testen der Debug-Erstellung zu ermöglichen.


1
Wie bist du sicher, dass er Firebase benutzt?
PaulG

Ich habe es erraten (Ähnlichkeit im Code und ohne Server). Das Firebase-Projekt ist auch mit der GCP-Konsole verbunden. Wir können auch Fingerabdrücke in GCP-Anmeldeinformationen ändern.
Niyas Nazar

Gleicher Fehler mit, aber in meinem Fall war es nicht mit Firebase verbunden (ich benutze es nicht).
Majed DH

Gehen Sie zu console.developers.google.com/apis/credentials. Fügen Sie mit dem SHA-Schlüssel einen neuen Berechtigungsnachweis (O Auth Client) hinzu. (Firebase macht dies automatisch für unsere Firebase-Projekte)
Niyas Nazar

Die Datei google-services.json befindet sich im App-Verzeichnis Ihres Projekts. (Gehen Sie durch Finder / Datei-Explorer)
Mehul Tandale

43

 für Fehler 12500 Sie müssen Support Google Mail nur in den Einstellungen von Firebase hinzufügen und für Fehler 10 SSH-Fingerabdruck in Firebase-Konsole hinzufügen, wie in der Abbildung gezeigt


Gute und unkomplizierte Antwort: Konfigurieren Sie einfach mein Google Mail-Konto und erledigen Sie den Rest
Ajeett

43

Support-E-Mails sowie alle Projekt- und Datenschutzlinks sind erforderlich, damit Google SignIn funktioniert. Andernfalls werden 12500 ausgegeben.

Stellen Sie es auf https://console.developers.google.com/apis/credentials am unteren Rand der zweiten Registerkarte mit dem Namen "OAuth-Zustimmungsbildschirm" ein. Dort finden Sie drei Links, die konfiguriert werden müssen.

Dies wird in den Firebase-Handbüchern nirgendwo erwähnt.


3
Danke, es funktioniert für mich. Ich habe fast ganze Tage damit verbracht, das Problem zu lösen
krishan kumar Sharma

2
Vielen Dank, ich habe gerade eine der 'autorisierten Domains' zu den Datenschutzlinks hinzugefügt und alles hat funktioniert. Sie haben mir einige Stunden Versuch und Irrtum erspart C
Coco

Dies sollte als Antwort akzeptiert werden. Ich habe mit diesen 2 Tagen gekämpft, ohne Erfolg. Google sollte Anleitungen aktualisieren, da ihre Dokumentation
derzeit

1
Wo kann man Datenschutzlinks hinzufügen?
Shihab Uddin

4
Auf der zweiten Registerkarte mit dem Namen "OAuth Zustimmungsbildschirm" - am unteren Rand des Formulars haben Sie drei Links
zub0r


18

Ich war eine Weile davon festgefahren.

Stellen Sie sicher, dass diese Schritte ausgeführt werden.

  • Der richtige SHA-Schlüssel wird in der Firebase-Konsole gespeichert.
  • Laden Sie die neueste Datei google-service.json herunter
  • Und letzte und wichtigste Save OAuth-Zustimmung unter Anmeldeinformationen in Google API, OAuth Screen Dies hat lange gedauert, um herauszufinden. Und danach hat es gut funktioniert.

6
Gut. Dies sollte hier die akzeptierte Antwort für 2019 sein. Die Google "muss" seltsamerweise den Inhalt in OAuth Consent
aktualisieren

1
Ugh, noch eine Abstimmung dafür. Total war mein obskures Problem.
easycheese

12

Ihr SHA1 wird anscheinend vom Google Play Store überschrieben. Überprüfen Sie in Ihrem Google Play Store, im Startfeld unter App-Signatur, ob bei Google Play ein zusätzliches SHA1 hinzugefügt wurde.

Und kopieren Sie, dass SHA1, fügen Sie es Ihrem relevanten Ort hinzu, die Arbeit erledigen würde.


1
Oh mein Gott! Danke für diesen Tipp! App Bundles haben einen eigenen SHA1 erstellt, sodass die lokal verwendeten Release-Schlüssel (beim Generieren von APKs) nicht mehr die richtigen sind.
Jia Tse

Dies ist der verwirrendste Workflow aller Zeiten. Aber danke für den Tipp
DarkNeuron

5

Wenn immer noch jemand mit einem ähnlichen Problem da draußen ist und Sie benutzerdefinierte Bereiche hinzufügen, stellen Sie sicher, dass es sich um einen gültigen Bereich handelt. In meinem Fall habe ich Facebook-Bereiche mit Google-Bereichen gemischt und eine Weile gebraucht, um das herauszufinden!


5

Ich verwende die Firebase-Authentifizierung. Mein SHA-1 wurde korrekt angezeigt, die Client-ID war ebenfalls korrekt, aber ich erhielt immer noch 12500.

Es stellte sich heraus, dass mein Problem darin bestand, dass ich in meinen Projekteinstellungen keine Support-E-Mail angegeben habe. (Einstellungen -> Registerkarte Allgemein -> Abschnitt Ihr Projekt (Öffentliche Einstellungen)).


3
Das gleiche passierte auch für mich. Es gibt schwerwiegende Dokumentationsprobleme mit den Google-Diensten. Ich wünschte, sie hätten solche Probleme dokumentiert oder zumindest einen benutzerfreundlichen Fehler angezeigt.
Ashish-Goel

4

Gehen Sie in der Firebase-Konsole zu Ihrem Projekt, öffnen Sie die Projekteinstellungen und fügen Sie dort Ihre SHA-Zertifikat-Fingerabdrücke hinzu. Laden Sie die aktualisierte Datei google-services.json herunter und fügen Sie sie Ihrem Projekt-App-Ordner hinzu.

Das hat bei mir funktioniert.

Screenshot der Firebase-Konsole


3

Ich denke, der Fehler kam vom falschen SHA1. Bitte vergessen Sie nicht, dass sich der SHA1 im Android Studio zwischen Release- und Debug-Modus unterscheidet. Anstatt Keytool zum Abrufen des SHA1 zu verwenden, können Sie Gradle-Projekt -> Task -> Android -> SigningReport im Android Studio verwenden (kann über das Menü Ansicht -> Toolwindow -> Gradle geöffnet werden), um SHA1 freizugeben und zu debuggen. Danach müssen Sie für eine einfache Arbeit zwei separate Anmeldeinformationen mit zwei SHA1 in der Google Cloud-Konsole erstellen (Google weist nur an, eine mit Release SHA1 zu erstellen, wenn wir sie entwickeln, funktioniert sie nicht, da sie das Debug-SHA1 verwendet).


3

Stellen Sie zunächst sicher, dass Sie Ihre App in der Google-Entwicklerkonsole registriert haben

Stellen Sie sicher , dass Sie beide haben die debugund releaseTasten in Ihrer Anwendung Firebase. Wenn dieser Fehler in der Produktion auftritt, fügen Sie Ihre SHA-1 release keyzu Fire Base App hinzu. Wenn es in der Entwicklung erscheint, fügen Sie Ihre hinzu SHA-1 debug key.

Wo man SHA-1 Fingerabdruck hinzufügt

Abrufen des Debug- / Release-Schlüssels:

keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]

Stellen Sie sicher, dass Sie das Update google-services.jsonauf Ihre App herunterladen .


Ich habe versagt, weil GoogleSignInResult.getSuccess () false und einen Code von 12500 zurückgegeben hat. Letztendlich hatte jemand anderes meine OAuth mit seinem SHA1 anstelle meines Debug-Schlüssels eingerichtet. Dies hat es behoben.
Rücksichtsloser

@Reckless Ich bin froh, dass dies geholfen hat!
Denn

2

Für mich bestand das Problem darin, eine Client-ID mit meiner debug-konfigurierten App zu verwenden. Stellen Sie sicher, dass Sie einen Release- und einen Debug-Schlüssel haben, und verwenden Sie jeweils die einzelnen SHA-1.


2

Wenn Sie vom Flattern hierher kommen : Dies ist einer der Eckfälle, die wir gemäß der Dokumentation hier beheben müssen: https://pub.dev/packages/google_sign_in Geben Sie hier die Bildbeschreibung ein

  • Gehen Sie zu Google APIs & Sevices
  • Wählen Sie die App aus, bei der Sie die Google-Anmeldung implementieren möchten.
  • Klicken Sie dann auf APIS und Dienste aktivieren

Geben Sie hier die Bildbeschreibung ein

  • Suchen Sie dann nach der Google Peoples API

Geben Sie hier die Bildbeschreibung ein

  • Öffnen Sie die Google People-API-Karte und klicken Sie auf "Aktivieren". Ihre App kann das Problem möglicherweise beheben.

2

Wenn sich Ihre App bei einem Backend-Server authentifiziert oder von Ihrem Backend-Server aus auf Google APIs zugreift, müssen Sie die für Ihren Server erstellte OAuth 2.0-Client-ID beim Erstellen des GoogleSignInOptions-Objekts an die requestIdToken-Methode übergeben, um auf die grundlegenden Profilinformationen des Benutzers zugreifen zu können . Vergessen Sie auch nicht, die Support-E-Mail im OAuth-Zustimmungsbildschirm auf der Seite Anmeldeinformationen in der API-Konsole zu senden.


1

Es kann auch vorkommen, dass der Cordova-Compiler die richtige Keystore-Datei nicht finden kann.



Lösung: Geben Sie vor der Ausführung ionic cordova build androiddie Signatureigenschaften an

Schritt 1 : Generieren Sie eine Debug-Keystore-Datei

Führen Sie den Befehl aus

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Passwort verwenden: android

Schritt 2: Kopieren Sie die Keystore-Datei ( debug.keystore) aus ~/.androiddem platform/androidVerzeichnis Ihres aktuellen Projekts

Schritt 3: Erstellen Sie eine Datei mit dem Namen release-signing.properties im platform/androidVerzeichnis

Schritt 4: Fügen Sie den Inhalt der Datei hinzu

storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android

Hinweis: Dies sind die Standardwerte. Wenn Sie einen benutzerdefinierten Alias ​​und ein Kennwort angegeben haben, verwenden Sie diese entsprechend.

Schritt 5: Jetzt bauenionic cordova build android


1

Ich hatte das gleiche Problem, nachdem ich mein Projekt auf einem anderen Computer (einem anderen Android Studio) geöffnet hatte. In meinem Fall habe ich es mit dem Firebase-Assistenten gelöst, mit dem ich Firebase ursprünglich eingerichtet hatte. Öffnen Sie den Firebase-Assistenten (Extras> Firebase) und wählen Sie Authentifizierung> Verbinden. Dadurch wurde das Projekt erneut mit Firebase verbunden und die Konfiguration aktualisiert


1

Ich steckte seit 2 Wochen in der Google Login-Ausgabe fest und habe sie schließlich gut sortiert. Lassen Sie mich den Grund erklären. Das Problem war mit Firebase verbunden. In Firebase wurde ein Feld "Support-E-Mail" als optional angegeben. Aber sobald ich es hinzugefügt habe (eine Ihrer persönlichen E-Mails), wurde das Problem behoben und ich erhielt die Antwort. Wenn Sie einen Fehler als 12501 erhalten, hängt dies mit den Einstellungen in Ihrem Google-Konto zusammen.


1

Ich war eine Weile davon festgefahren.

Stellen Sie sicher, dass diese Schritte ausgeführt werden.

Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method

0

In meinem Fall liegt es an der falschen Google Client-ID. Ich ändere meinen Schlüssel in den google-services.jsonunter (unter oauth_clientObjekt) aufgeführten Schlüssel.


0

Stellen Sie sicher, dass die folgenden Dinge richtig eingerichtet sind:

  1. Generieren Sie eine Kunden-ID in Ihrem Google-Projekt.
  2. Geben Sie den richtigen SHA-1-Schlüssel für diese Client-ID an. (Debug / Release)
  3. Geben Sie den richtigen Paketnamen für diese Client-ID an.
  4. Stellen Sie sicher , haben Sie Client - ID in erzeugt strings.xml, google-services.jsonoder credentials.jsonDatei.

0

https://developers.google.com/identity/sign-in/android/sign-in Befolgen Sie diese API-Dokumentation. Beachten Sie jedoch, dass in WEB_CLIENT_ID der Wert der Client-ID verwendet wird, die in der Datei google-services.json generiert wird.

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()
    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }

}

fun signIn() {

}

override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}

0

In meinem Fall wurde der Fingerabdruck nach dem Hinzufügen in der Firebase-Konsole automatisch von der Google-Entwicklerkonsole erfasst und die Fingerabdrücke angezeigt. Aber die Anmeldung hat nicht funktioniert. Nachdem ich mir jeden Schritt angesehen hatte, stellte ich fest, dass Google mein Manifest-Dateipaket wie folgt umgekehrt hat com.xxxxxxxx.app. Aber es ist tatsächlich app.xxxxxxxx.comin der Google-Entwicklerkonsole. Also habe ich automatisch einen Fingerabdruck erstellt und einen Fingerabdruck mit dem richtigen Paketnamen hinzugefügt. BOOM!!. Es funktionierte.


0

Der Fehler trat mir auf, als die Google-Option nicht aktiviert war (siehe Abbildung) .

Es geschah, als ich das Konto von Google änderte und vergaß, die Option zum Herstellen einer Verbindung mit Google zu aktivieren.


0

Stellen Sie sicher, dass Ihr Projekt keine Sonderzeichen einschließlich Zahlen oder Symbolen enthält (der Projektname sollte so einfach wie com.google.testproject sein).


Das heißt Projekt Paketname nicht Projektname
b devloper

0

In meinem Fall, in dem ich an einer Nicht-Produktions-App arbeitete, bestand das Problem darin, dass beim Erstellen eines Projekts in der Firebase-Konsole Probleme beim Synchronisieren von SHA-1-Schlüsseln von Firebase- und Google-Entwicklerkonsolen auftraten. Daher habe ich beschlossen, das Projekt zuerst in der Google Developer-Konsole zu erstellen und es dann beim Erstellen eines neuen Projekts in der Firebase-Konsole auszuwählen.

Ich habe auch ein Tutorial dafür gemacht, das Ihnen helfen kann.


0

In meinem Fall war das Problem, dass mein Emulator keinen Play Store hatte. Ich habe den Emulator (API 23) über Visual Studio erstellt, da ich ihn auch mit Xamarin.Forms entwickle. Im Android-Geräte-Manager von Visual Studio können Sie auswählen, ob Ihr Emulator über Google Play Store verfügen soll.

Musste einen Emulator über die AVD von Android Studio erstellen und sicherstellen, dass der Play Store vorhanden ist:

Geben Sie hier die Bildbeschreibung ein


0

In meinem Fall war dieser Fehler vorhanden, weil die Android-Authentifizierung vom Senior-Team entfernt wurde, da anscheinend kein Android-Schlüssel für die Backend-Authentifizierung erforderlich ist. Daher werden für die Google-Anmeldung sowohl Android- als auch Web-Client-Schlüssel benötigt.


-1

Probieren Sie diese Optionen aus:

keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test

Es fordert zur Eingabe des Passworts auf und gibt einfach das Passwort ein. Sie können die SHA1- und MD5-Fingerabdrücke sehen.

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.