Error de GLS: INVALID_AUDIENCE en los puntos finales de la nube de google

Estoy tratando de obtener un extremo de google a work.I creó un servicio de punto final y fue capaz de probar que su trabajo bien a través de Google API explotador. Entonces generé el cliente de android y tryied para llamar mi servicio del punto final. Veo este error en el registro,

04-05 08:48:20.547: I/GLSUser(13505): GLS error: INVALID_AUDIENCE [email protected] audience:server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com 

Aquí está mi código java android para construir la credencial, es decir, utilizado para acceder a mi servicio,

 AUDIENCE = "server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com"; credential = GoogleAccountCredential.usingAudience(this, AUDIENCE); setAccountName(settings.getString(PREF_ACCOUNT_NAME, null)); 

Parece que hay un cierto desajuste en client_id. Esto es lo que hice,

1) Creó 2 client_ids en la consola de API de Google en un proyecto de API, a) WEB_CLIENT_ID = Creé un client_id para aplicaciones web con Redirect URIs = None & JavaScript origins = None. B) ANDROID_CLIENT_ID = Creó un id_cliente para la aplicación android con el nombre del paquete y la huella digital del certificado sha1.

2) A continuación, utiliza estos en mi servicio de punto final en python,

 @endpoints.api(name='devices', version='v1', description='Service to register devices', allowed_client_ids=[ANDROID_CLIENT_ID,WEB_CLIENT_ID,endpoints.API_EXPLORER_CLIENT_ID], audiences = [WEB_CLIENT_ID]) 

Registro completo

 04-05 08:48:20.397: D/overlay(159): Set pipe=RGB1 dpy=0; Set pipe=VG0 dpy=0; 04-05 08:48:20.547: W/GLSUser(13505): Status from wire: INVALID_AUDIENCE status: null 04-05 08:48:20.547: W/GLSUser(13505): Status from wire: INVALID_AUDIENCE status: null 04-05 08:48:20.547: I/GLSUser(13505): GLS error: INVALID_AUDIENCE [email protected] audience:server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com 04-05 08:48:20.547: W/GLSUser(13505): Status from wire: Unknown status: UNKNOWN 04-05 08:48:20.547: W/System.err(31908): com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException 04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:224) 04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:836) 04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412) 04-05 08:48:20.557: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345) 04-05 08:48:20.557: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463) 04-05 08:48:20.557: W/System.err(31908): at com.package.appname.SetupActivity$SendResultToServerTask.doInBackground(SetupActivity.java:174) 04-05 08:48:20.557: W/System.err(31908): at com.package.appname.SetupActivity$SendResultToServerTask.doInBackground(SetupActivity.java:1) 04-05 08:48:20.557: W/System.err(31908): at android.os.AsyncTask$2.call(AsyncTask.java:287) 04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 04-05 08:48:20.557: W/System.err(31908): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 04-05 08:48:20.557: W/System.err(31908): at java.lang.Thread.run(Thread.java:856) 04-05 08:48:20.557: W/System.err(31908): Caused by: com.google.android.gms.auth.GoogleAuthException: Unknown 04-05 08:48:20.557: W/System.err(31908): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 04-05 08:48:20.557: W/System.err(31908): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 

Ya han visto hilos similares y no ayudaron, Google Api y Android Oauth INVALID_AUDIENCE error

Resuelvo este problema estableciendo un nombre para el proyecto en la consola google api.

En la nueva consola de API de la interfaz de usuario en [APIs & auth] -> [Consent screen]

¡Uf! Finalmente lo consiguió para trabajar. No estoy seguro de lo que estaba mal. Probado estas cosas, eliminado el archivo debug keystore y regenerado. Copió la huella dactilar sha1 en la consola api. Luego siguió las instrucciones de aquí – http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html para asegurarse de que al menos pueda obtener un token en el dispositivo android. Luego cambié a usar las clases de cliente generadas de punto final. Ahora mi aplicación es capaz de hablar con el motor de aplicaciones backend a través del servicio de punto final.

Obtendrá este error si ANDROID_CLIENT_ID que anote @ Api # clientIds con un nombre de paquete de Android distinto al del cliente de Android.

P.ej

 @Api( name = "yourFirstService", version = "v1", namespace = @ApiNamespace(ownerDomain = "myorg.org", ownerName = "My Org", packagePath = "firstservice" ), scopes = {Constant.API_EMAIL_SCOPE}, clientIds = {Constants.ANDROID_CLIENT_ID, Constant.API_EXPLORER_CLIENT_ID}, audiences = {Constants.ANDROID_AUDIENCE} ) public class YourFirstAPI { ... } 

El punto de interés es el atributo clientId. El ANDROID_CLIENT_ID necesita

  1. Haga coincidir la clientId en su Cloud Console->APIS & Auth->Credentials->Client ID for Android aplicación de Cloud Console->APIS & Auth->Credentials->Client ID for Android .
  2. El nombre del paquete de ese cliente debe ser el mismo que la aplicación de Android que está utilizando como cliente.

Este problema se produjo para mí cuando creé un nuevo entorno de desarrollo en otro sistema. Instalé Android Studio en el nuevo sistema y copié el código. El mismo código que funcionó en mi sistema antiguo no funcionó en el nuevo, con INVALID_AUDIENCE. Después de probar varias cosas, lo que finalmente funcionó fue copiar el archivo debug.keystore de mi sistema antiguo al nuevo. En Windows el archivo se encuentra en% USERPROFILE% .android. Esto tiene sentido ya que la depuración.keystore es generada por Android Studio en la instalación específicamente para ese equipo. El debug.keystore tiene una fecha de caducidad (365 días que escuché) por lo que también podría ser la causa. Así que la verdadera solución para mí era regenerar el archivo debug.keystore en el nuevo sistema. La eliminación del archivo debug.keystore y la reinicialización de Android Studio regenerarán el archivo. A continuación, ejecute keytool para obtener la huella digital del certificado SHA1. A continuación, vaya a http://console.developers.google.com para crear un nuevo ID de cliente con la huella digital.

Sucedió a uno en mi equipo aunque funcionó bien en mi dispositivo. Resultó ser debido a un debug.keystore diferente en nuestras instalaciones de eclipse.

Para solucionarlo hemos copiado el archivo debug.keystore la compañía en ~/.android/ (este es el directorio en un mac, es diferente en linux y windows)

  • Problemas con la conexión Bluetooth de Android
  • Ejecución de script python en el emulador de terminal android
  • Enviar bytes de Raspberry Pi (usando python) a una aplicación java android sobre bluetooth
  • ¿Cómo puedo crear un proyecto en kivy en android?
  • Google Cloud Endpoints Cliente Android: error de autenticación
  • Youtube-dl en Android
  • Ejecutar la aplicación en segundo plano
  • Subprocess.CalledProcessError devolvió el estado de salida distinto de cero 1
  • QPython o Kivy para la programación de Android con apk instalable en Python
  • Python Interpreter en Android
  • Cómo utilizar un script para consultar la base de datos android sqlite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.