studio sesion response_type inicio google developer con authenticator android authentication google-api single-sign-on google-oauth

android - sesion - google sign in apk



GoogleAuthException al obtener un token de acceso con ClientID (5)

Los dos ID de cliente deben ser parte del mismo proyecto.

Para más contexto, este post sigue a este .

Para resolver mi problema anterior, traté de seguir la solución presentada aquí por Tim Bray: Verificación de llamadas de fondo desde aplicaciones de Android

Decidí dos proyectos en la Consola de API de Google para obtener dos ID de cliente

  • El primero como "Aplicación web" con "localhost" como nombre de host (¿Importa?)
    • ID de cliente: XXXXXXXXXX.apps.googleusercontent.com
  • La segunda como aplicación de Android con el nombre del paquete especificado en AndroidManifest.xml y SHA1 huella digital (probado con debug.keystore y [my] .keystore)
    • ID de cliente: YYYYYYYYYY.apps.googleusercontent.com

Lamentablemente, estoy enfrentando una excepción en Android:

com.google.android.gms.auth.GoogleAuthException: Unknown at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:66) at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:1) at android.os.AsyncTask$2.call(AsyncTask.java:185) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) at java.lang.Thread.run(Thread.java:1102)

En la línea:

return GoogleAuthUtil.getToken(LoginActivity.this, account[0], "audience:server:client_id:XXXXXXXXXX.apps.googleusercontent.com");

¿Que estoy haciendo mal?

Gracias por adelantado


Recibí este error cuando cambié el nombre de mi paquete y olvidé generar un nuevo ID de cliente con la depuración SHA1 en la consola de la API de Google.


Después de varias horas, descubrí que en su cadena de alcance ( "audience:server:client_id:..." ) debe usar la Id. De cliente de la aplicación web, no la de Android.

La identificación del cliente de la aplicación de Android no se usa. Está aquí solo para vincular el nombre del paquete de su aplicación de Android con su aplicación web.


No hay necesidad de hacer más. Por favor, vuelva a crear su identificación de cliente en la consola de Google y escriba esta línea en su código como cadena de alcance.

String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";

https://github.com/AshishPsaini/GoogleAuth


Cambie el alcance agregado en GoogleApiCliente a Plus.SCOPE_PLUS_LOGIN. Este trabajo para mí.

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