it-swarm.com.de

Problem bei der Android Google Plus-Anmeldung. handleSignInResult gibt False zurück

Bei der Integration der Google+ Signin-Funktion sind einige Probleme aufgetreten. Bisher habe ich alle notwendigen G + Sign-in-API-Module und -Codes integriert, die gut funktionieren, die google-services.json generiert und innerhalb von/app platziert haben, nachdem SHA1 mit dem Keytool von debug.keystore generiert und der SHA1 in die Google-Cloud eingefügt wurde Entwicklerkonsole, aber jetzt gibt es nur eine Panne, mit der ich seit vielen Tagen/Wochen konfrontiert bin, dh wenn ich versuche, das Gerät zu debuggen, und wenn ich auf "G + Sign In" klicke, erhalte ich die folgende Fehlermeldung in LogCat: 

E/GMPM: getGoogleAppId ist mit dem Status 10 fehlgeschlagen 

E/GMPM: Hochladen ist nicht möglich. App-Messung deaktiviert 

D/SignInActivity: handleSignInResult: false

Dieses handleSignInResult gibt die ganze Zeit False zurück und kann sich nicht anmelden, um Daten weiter abzurufen. Falls jemand von Ihnen jemals in eine solche Situation geraten ist, helfen Sie mir bitte hier draußen. Dieses kleine Hindernis ist ziemlich verrückt. 

Danke euch allen.

10
rohitpaniker

Verwenden Sie Plus.API oder Auth.GOOGLE_SIGN_IN_API? Letzteres ist das letzte überarbeitete. Überprüfen Sie es hier: https://developers.google.com/identity/sign-in/Android/sign-in


Wenn Sie Auth.GOOGLE_SIGN_IN_API verwenden:

Verwenden Sie in onActivityResult folgenden Code, um einen Statuscode zu erhalten, der von GoogleSignInStatusCodes definiert wird: https://developers.google.com/Android/reference/com/google/Android/gms/auth/api/ Anmelden/GoogleSignInStatusCodes

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

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        int statusCode = result.getStatus().getStatusCode();
    }
}

Das häufigste Problem ist das Fehlen der richtigen OAuth2-Clientregistrierung. (Leider ist der Statuscode für den Moment INTERNAL_ERROR 8, was nicht hilfreich ist.) Z. Schauen Sie sich diesen Thread an: Ist bei der requestEmail von GoogleSignInOptions Android auf ein INTERNAL_ERROR gekommen

7
Isabella Chen

Wie Sudhanshu Gaur in diesem Beitrag ausgeführt hat, versuchen Sie zunächst, eine signierte apk mit dem gleichen Schlüssel zu generieren, mit dem Sie Ihre json-Konfigurationsdatei erstellt haben . Installieren Sie es dann auf Ihrem Gerät und prüfen Sie, ob es funktioniert. Der Grund ist, dass Android Studio Ihre APK nicht signiert, wenn Sie auf "Ausführen" klicken.
Ich hatte genau das gleiche Problem und dieses Update funktionierte gut für mich.

4
Jason Liu

Stellen Sie sicher, dass Sie bei der Erstellung der SHA-1-Datei den Code google-services.json debug angewendet haben.

4
lRadha

Wenn Sie noch immer alle SHA-1-Fingerabdrücke in Firebase hinzufügen, wird eine Fehlermeldung angezeigt. (Dieses Problem ist aufgetreten. Nach diesen Schritten wurde es behoben.) Führen Sie die folgenden Schritte aus:

1.Gehen Sie zu Google Console API-Anmeldeinformationen Seite.

2.Klicken Sie auf der Registerkarte "Links" auf Berechtigungsnachweise.

3.Es sind bereits zwei Standard-Android- und Web-OAuth-Client-IDs vorhanden. Sie müssen One Android Client und One Web 2.0 Client erstellen.

4. Gehen Sie zu Firebase. Laden Sie in den Projekteinstellungen google-services.json herunter und fügen Sie sie in den App-Ordner ein. 

(Alles ist in Ordnung, aber Sie können sich nicht anmelden. Google bedeutet möglicherweise ein OAuth-Problem. Stellen Sie daher sicher, dass Sie eine Android- und Web-Client-ID erstellen. Schließlich haben Sie auf der Anmeldeinformationsseite zwei Android-Client- und zwei Web-Client-IDs.)

2
Gopal

sie müssen den SHA-1-Hash Ihres Signaturzertifikats in Ihrer App angeben

beispiel: 

Registrierte SHA-1s:

CF: 4A: A1: 0A: BC: 84: F2: 31: 28: C3: BA: A7: A3: A2: 36: 10: 5F: 1D: 3E: CB Laden Sie die von Ihnen erstellte Konfigurationsdatei herunter. und ersetzen Sie es in * Ihr Projekt/app/google-service.json

// Holen Sie sich die google-service.json-Datei tutorial https://developers.google.com/identity/sign-in/Android/start-integrating

// Wie erhalte ich SHA-1 https://developers.google.com/Android/guides/client-auth

1
Exel Staderlin
package com.google.samples.quickstart.signin;

import Android.content.Intent;
import Android.os.Bundle;
import Android.support.annotation.NonNull;
import Android.support.annotation.Nullable;
import Android.support.v7.app.AppCompatActivity;
import Android.util.Log;
import Android.view.View;
import Android.widget.TextView;

import com.google.Android.gms.auth.api.signin.GoogleSignIn;
import com.google.Android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.Android.gms.auth.api.signin.GoogleSignInClient;
import com.google.Android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.Android.gms.common.SignInButton;
import com.google.Android.gms.common.api.ApiException;
import com.google.Android.gms.tasks.OnCompleteListener;
import com.google.Android.gms.tasks.Task;

/**
 * Activity to demonstrate basic retrieval of the Google user's ID, email address, and basic
 * profile.
 */
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_DEMO);

        // 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());
            updateUI(null);
        }
    }
    // [END handleSignInResult]

    // [START signIn]
    private void signIn() {

        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);

       /* Intent sign = mGoogleSignInClient.getSignInIntent ();
        startActivityForResult ( sign, 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;
        }
    }
 }
0
Good We

Generieren Sie zuerst den Debug-Schlüssel:

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

Fügen Sie dann den SHA1 in die Firebase- oder Google-Projekteinstellungen im Fingerabdruckbereich ein.

0
Taras Vovkovych

Bitte überprüfen Sie, ob der mit SHA-1 hinzugefügte Schlüssel debug oder release ist, basierend auf Ihrem Schlüssel relativ zur Arbeit. __ Ich habe dasselbe Problem wird falsches Ergebnis erhalten

0
Sagar Pithiya