OnConnectionFailed dando SIGN_IN_REQUIRED (4)

Estoy desarrollando una aplicación de Android en la que desee utilizar la API de Google. Para eso he importado el proyecto google-play-service-lib .

Estoy siguiendo este enlace para inicializar el objeto GoogleApiClient.

Mi código:

1) En el método onCreate() estoy construyendo el objeto GoogleApiClient :

 mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(Plus.API, null) .addScope(Plus.SCOPE_PLUS_LOGIN) .build(); 

2) En onStart() , llamo mGoogleApiClient.connect() .

3) Mi actividad implementa ConnectionCallbacks y OnConnectionFailedListener.

4) Mi método onConnectionFailed() se parece a:

 public void onConnectionFailed(ConnectionResult result) { //in dubug result looks like : ConnectionResult{ //statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent // {41f8ca70: android.os.BinderProxy@41f8ca10}} try { if(!mIntentInProgress && result.hasResolution()) { mIntentInProgress=true; result.startResolutionForResult(mActivity, RC_SIGN_IN); } } catch (SendIntentException e) { e.printStackTrace(); } } 

5) Mi método onActivityResult() contiene:

 if (requestCode == RC_SIGN_IN) { if (!mGoogleApiClient.isConnecting()) { mGoogleApiClient.connect(); } } 

Cuando ejecuto mi aplicación obtengo un Toast que dice que un error interno apareció. Creé el proyecto en la consola de Google.

Yo tuve el mismo problema.

De la documentación: El cliente puede optar por continuar sin usar la API o puede llamar a startResolutionForResult (Activity, int) para pedir al usuario que inicie sesión.

Por lo que debe intentar iniciar sesión mediante la función startResolutionForResult ()

 @Override public void onConnectionFailed(ConnectionResult result) { if (result.hasResolution()) { try { // !!! result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); } catch (SendIntentException e) { mPlusClient.connect(); } } mConnectionResult = result; } 

Solo sigue las instrucciones de google

Y PRECAUCIÓN

Puesto que todavía estás en modo de desarrollo, comprueba si has añadido tu dirección de correo electrónico de prueba en el centro DETALLES DE JUEGO antes de publicar el juego.

Comprueba que estás firmando la aplicación con un almacén de claves que se encuentra en el apk cargado en la Consola del programador de Google Play (si prueba, puedes subirlo como alfa y publicarlo mientras lo mantengas privado).

Si no es así, podría ser otras cosas. Asegúrese de que la dirección de correo electrónico de su cuenta aparece en los probadores en la página Detalles de la cuenta (en el menú de configuración con un icono de rueda dentada) y la respuesta con licencia está establecida en LICENCIADO, NO en RESPOND_NORMALLY

Este error indica que el usuario debe autorizar su aplicación. Hay un flujo de trabajo completo para esto, siguiendo el tutorial en https://developers.google.com/+/mobile/android/getting-comenzado busque "onConnectionFailed"

Drive api debe estar habilitado desde la página de la consola.

No estoy seguro de si esta es la mejor respuesta, pero funcionó para mí. Copié onConnectionFailed () del BasicSamples TakeANumber MainActivity. Se llama a BaseGameUtils para resolver. Por supuesto, eso implica que tiene la biblioteca BaseGameUtils incluida en su proyecto y que es otra lata de gusanos. Pero quizás usted puede conseguir con un método así que lo copié abajo.

 @Override public void onConnectionFailed(ConnectionResult connectionResult) { logger.info( "onConnectionFailed() *play* : attempting to resolve"); if (mResolvingConnectionFailure) { logger.info( "onConnectionFailed(): already resolving"); return; } if (mSignInClicked || mAutoStartSignInFlow) { mAutoStartSignInFlow = false; mSignInClicked = false; mResolvingConnectionFailure = true; if (!BaseGameUtils.resolveConnectionFailure(this, mGoogleApiClient, connectionResult, RC_SIGN_IN, getString(R.string.signin_other_error))) { mResolvingConnectionFailure = false; } } } 

Desde Google BasicSamples BaseGameUtils.java:

  public static boolean resolveConnectionFailure(Activity activity, GoogleApiClient client, ConnectionResult result, int requestCode, String fallbackErrorMessage) { if (result.hasResolution()) { try { result.startResolutionForResult(activity, requestCode); return true; } catch (IntentSender.SendIntentException e) { // The intent was canceled before it was sent. Return to the default // state and attempt to connect to get an updated ConnectionResult. client.connect(); return false; } } else { // not resolvable... so show an error message int errorCode = result.getErrorCode(); Dialog dialog = GooglePlayServicesUtil.getErrorDialog(errorCode, activity, requestCode); if (dialog != null) { dialog.show(); } else { // no built-in dialog: show the fallback error message showAlert(activity, fallbackErrorMessage); } return false; } } 

Si no está utilizando las claves de depuración, pulse la aplicación para google play como alpha, añádase como probador y lo más importante: siga el enlace "Opt-in" en la página Aplha y CONFIRME que es el probador.

Me gustaría compartir mi experiencia con esto. Mi caso fue cuando usé Google Play Services para Google Play Games. También estaba recibiendo el error onConnectionFailed dando SIGN_IN_REQUIRED. Finalmente me doy cuenta de que no había "publicado" mis ajustes de juego en la consola de desarrollo. No debe confundirse con la publicación de una versión "alfa" o "beta" de su apk. Me refiero a los actuales juegos de Google Play "Juego" que crear y vincular a la APK del juego.

Tuve el mismo problema y resuelto con esta solución, en realidad tenía muy antigua versión google play-servicios de la biblioteca por lo que lo actualizó con la última google play-service de la biblioteca para compilar 'com.google.android.gms: play-services: 11.0.4 ' De mi biblioteca de versiones anteriores para soportar su androide SDK y mantener compileSDKVersion y targetSDKVersion en gradle: app. Añadir google drive habilitado API_KEY en manifest.and intentar de nuevo

  • GetToken () falló. Estado BAD_AUTHENTICATION error
  • Androide basado en turnos multijugador personalizado invitar pantalla
  • Mensaje INVALID_KEY que intenta autenticarse mediante el botón de inicio de sesión de Google+
  • Cómo obtener problemas de AdMobs
  • ¿Cómo puedo llamar a startIntentSenderForResult en el servicio correctamente?
  • Cómo probar Admob en dispositivo real si no tiene identificador de bloque de anuncios
  • Comprobación del estado del GPS con Google Play Services
  • Error de Google Play Services - Informe de errores Incomprensible
  • Actualización de Google Play Services
  • Inicializando Games Client en Android
  • Después de actualizar los servicios de reproducción de Google a las notificaciones de envío 8.4.0 mostradas por ellos mismos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.