7

Ich entwickle die Anwendung, wo ich versuche, mich mit Google anzumelden. Aber getExtrasdata gibt immer null zurück. HierAndroid Google Auth Anmelden handleSignInResult: false

ist das, was ich aus anmelden:

getSignInIntent = { act=com.google.android.gms.auth.GOOGLE_SIGN_IN cmp=com.rbsoftware.pfm.personalfinancemanager/com.google.android.gms.auth.api.signin.internal.SignInHubActivity (has extras) } 

[email protected] 

handleSignInResult:false 

r[email protected]7d8c188 

data=Intent { (has extras) } 

getExtrasdata=Bundle[{googleSignInStatus=Status{statusCode=INTERNAL_ERROR, resolution=null}}] 

Alles sollte in Developer Console in Ordnung sein.

Könnten Sie mir bitte helfen, dieses Problem zu beheben?

package com.rbsoftware.pfm.personalfinancemanager; 


import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.Bundle; 
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.Auth; 
import com.google.android.gms.auth.api.signin.GoogleSignInAccount; 
import com.google.android.gms.auth.api.signin.GoogleSignInOptions; 
import com.google.android.gms.auth.api.signin.GoogleSignInResult; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.SignInButton; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.OptionalPendingResult; 
import com.google.android.gms.common.api.ResultCallback; 


public class LoginActivity extends AppCompatActivity implements 
     GoogleApiClient.OnConnectionFailedListener, 
     View.OnClickListener { 
    private static final String TAG = "SignInActivity"; 
    private static final int RC_SIGN_IN = 9001; 

    public GoogleApiClient mGoogleApiClient; 

    private ProgressDialog mProgressDialog; 

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

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


     // [START configure_signin] 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .build(); 
     // [END configure_signin] 

     // [START build_client] 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 
     // [END build_client] 

     // [Button] 
     SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); 
     signInButton.setSize(SignInButton.SIZE_WIDE); 
     signInButton.setScopes(gso.getScopeArray()); 
    } 

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

     OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); 
     if (opr.isDone()) { 
      Log.d(TAG, "Got cached sign-in"); 
      GoogleSignInResult result = opr.get(); 
      handleSignInResult(result); 
     } else { 

      opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { 
       @Override 
       public void onResult(GoogleSignInResult googleSignInResult) { 

        handleSignInResult(googleSignInResult); 
       } 
      }); 
     } 
    } 

    // [START onActivityResult] 
    @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); 
      handleSignInResult(result); 
     } 
    } 
    // [END onActivityResult] 

    // [START handleSignInResult] 
    private void handleSignInResult(GoogleSignInResult result) { 
     Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
     if (result.isSuccess()) { 
      // Signed in successfully, show authenticated UI. 
      GoogleSignInAccount acct = result.getSignInAccount(); 
      Intent intent = new Intent(this, MainActivity.class); 
      intent.putExtra("name", acct.getDisplayName()); 
      intent.putExtra("id", acct.getId()); 
      intent.putExtra("email", acct.getEmail()); 
      intent.putExtra("photoURL", acct.getPhotoUrl()); 
      Log.d("USER Pic", acct.getPhotoUrl()+""); 
      startActivity(intent); 
      finish(); 
        } else { 
     } 
    } 
    // [END handleSignInResult] 

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



    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 

     Log.d(TAG, "onConnectionFailed:" + connectionResult); 
    } 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.sign_in_button: 
       signIn(); 
       break; 

     } 
    } 

} 
+0

Welche PlayServices-Version verwenden Sie? Wir verwenden 8.3 und haben dasselbe Problem. –

+2

dasselbe Problem mit 8.4 ... haben Sie eine Lösung gefunden? – Jokus

+0

Überprüfen Sie die OAuth-Client-ID-Konfiguration für Ihr Projekt? http://android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html –

Antwort

2

Der SHA1-Fingerabdruck von Keystore ist beschädigt. Sie haben ~/.android /? Geändert, Android Studio neu installiert ?, Sie müssen die SHA1-Taste neu generieren. Löschen Sie den aktuellen Schlüssel api von https://console.developers.google.com/apis/credentials und erstellen Sie einen neuen Schlüssel mit SHA1 des neuen Debug-Keys in ~/.android/debug.keystore (das Standardkennwort ist leer). diese

Look: https://www.numetriclabz.com/android-google-integration-and-login-tutorial/

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

Paste SHA1 in neue Schlüssel api für Debug-Instanzen.

Erinnern Sie sich: Sie brauchten anderen Fingerabdruck des Produktionsschlüsselspeichers.

2

Das Problem liegt möglicherweise daran, dass Sie die signierte Version Ihrer App nicht ausführen.
Als Sudhanshu Gaur in this post wies, versuchen Sie zuerst, eine signierte apk mit dem gleichen Schlüssel zu generieren, den Sie an create your json configuration file verwendeten. Dann installieren Sie es auf Ihrem Gerät und sehen, ob es funktioniert. Der Grund dafür ist, dass Android Studio deine App nicht signiert, wenn du auf "Ausführen" klickst.
Ich war auf genau das gleiche Problem fest und diese Lösung funktionierte gut für mich.

Verwandte Themen