El servicio de juegos de Google Play no puede iniciar sesión

He estado golpeándome la cabeza contra la pared por varios días. A pesar de leer muchas publicaciones que describen numerosos problemas / soluciones a la falla de inicio de sesión GPS, no he podido encontrar una solución a mi problema.

En resumen, estoy desarrollando un juego en Android Studio usando el marco LibGDX y agregué BaseGameUtils como una biblioteca y agregué todas las dependencias necesarias, etc.

Planteamiento del problema: Cuando comienza el juego, intenta conectarse a GPGS pero siempre responde con un mensaje de "Error al iniciar sesión". El logcat contiene el siguiente mensaje:

01-03 19:37:41.744 6693-7436/? E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
01-03 19:37:41.764 20609-20609/? I/SignInActivity: Transition from 6 to 11
01-03 19:37:41.764 20609-20609/? W/SignInActivity: onSignInFailed()...
01-03 19:37:41.764 20609-20609/? W/SignInActivity: Sign in failed during 6
01-03 19:37:41.764 20609-20609/? W/SignInActivity: ==> Returning non-OK result: 10002

De acuerdo ahttps://developers.google.com/android/reference/com/google/android/gms/games/GamesActivityResultCodes ...

public static final int RESULT_SIGN_IN_FAILED

Result code sent back to the calling Activity when signing in fails.

The attempt to sign in to the Games service failed.
For example, this might happen if the network is flaky,
or the user's account has been disabled, or consent could not be obtained.

Constant Value: 10002

Mi red no es `` inestable '' y no creo que mi cuenta haya sido deshabilitada; otros juegos comerciales que he instalado funcionan perfectamente con GPGS.

He firmado mi APK, tanto de depuración como de lanzamiento (aunque solo estoy trabajando con la depuración en esta etapa). Agregué el juego a la Consola del desarrollador de Google, lo vinculé en el Administrador de API y creé el ID de cliente OAuth2. De hecho, he hecho esto muchas veces, borrando el juego vinculado y recreándolo pensando que mi ID de cliente o la huella digital SHA1 eran incorrectas. El mensaje logcat sugiere que la configuración de OAuth2 es incorrecta, pero lo he comprobado muchas veces y todo me parece bien. ¿Cuál es la mejor manera de verificar la firma?

Estoy probando en un Samsung S7 físico que implemento directamente desde mi computadora portátil. Mi Android Gradle tiene las SigningConfigs necesarias declaradas, así que creo que mi juego implementado debe estar correctamente firmado.

android {
signingConfigs {
    config {
        keyAlias 'mygame-key'
        keyPassword 'mypassword'
        storeFile file('path/to/my/keystore.jks')
        storePassword 'keystorepassword'
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.config
    }
    debug {
        signingConfig signingConfigs.config
        debuggable true
    }
}

En mi manifiesto, tengo las líneas requeridas. P.ej. -

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

Originalmente, en AndroidLauncher, estaba usando la clase GameHelper, pero descubrí recientemente que esto está en desuso, por lo que cambié mi código para usar GoogleApiClient. El constructor se define de la siguiente manera:

mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES)
            .build();

El código para los otros métodos se ha tomado directamente de la aplicación de ejemplo TrivialQuest, p. -

@Override
protected void onStart() {
    Log.d(TAG, "onStart()");
    super.onStart();
    mGoogleApiClient.connect();
}

Sin embargo, a pesar de usar el código de cliente API de Google, esto no ha hecho ninguna diferencia.

No estoy seguro de qué más proporcionar aquí, pero avíseme si necesita ver otras partes del código. Estaría extremadamente agradecido por cualquier sugerencia de cosas para examinar en el código o los registros para obtener una mejor idea de por qué esto está fallando.

Muchas gracias de antemano.

Respuestas a la pregunta(2)

Su respuesta a la pregunta