Android Google Auth Iniciar sesión handleSignInResult: false

Estoy desarrollando la aplicación en la que intento iniciar sesión con Google. Pero getExtrasdata devuelve siempre null.

Aquí es lo que tengo de registro:

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) } mGoogleApiClient=com.google.android.gms.internal.zzmg@1f595441 handleSignInResult:false result=com.google.android.gms.auth.api.signin.GoogleSignInResult@7d8c188 data=Intent { (has extras) } getExtrasdata=Bundle[{googleSignInStatus=Status{statusCode=INTERNAL_ERROR, resolution=null}}] 

Todo debería estar bien en la Consola para desarrolladores.

¿Podría por favor ayudarme a solucionar este problema?

 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; } } } 

El problema puede deberse a que no está ejecutando la versión firmada de la aplicación.
Como Sudhanshu Gaur señaló en este post , pruebe primero a generar un apk firmado usando la misma clave que utilizó para crear su archivo de configuración json . Luego instálelo en su dispositivo y ver si funciona. La razón es Android Studio no firma su apk cuando hace clic en "ejecutar".
Yo estaba atascado en exactamente el mismo problema y esta solución funcionó bien para mí.

La huella digital SHA1 de keystore está dañada. Has cambiado ~ / .android / ?, has reinstaled android studio ?, necesitas regenerar la clave SHA1. Elimine la clave actual api de https://console.developers.google.com/apis/credentials y cree una nueva clave con SHA1 del almacén de nuevas claves de depuración en ~ / .android / debug.keystore (la contraseña predeterminada está vacía).

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

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

Pegue SHA1 en la nueva clave api para las instancias de depuración.

Recuerde: necesita otra huella digital de keystore de producción.

  • ¿Qué diferencia hay entre requestIdToken y requestServerAuthCode en google singnin
  • Integración de Google Plus en la aplicación Android
  • Cómo realizar una búsqueda de imágenes de Google en una aplicación de Android
  • Error al recuperar el token de acceso de OAuth 2.0 en el emulador de Android
  • Identidad de sitios cruzados de Google y de Google
  • ¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?
  • ¿Cómo verifica Google las huellas dactilares y paquetes de Android SHA1?
  • Acceso a Google Cloud Storage desde Android OAuth2
  • Cómo guardar datos de aplicaciones de Android en Google Cloud
  • Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
  • ¿Cómo acceder al Calendario del usuario en el dispositivo Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.