Autorización de token para una aplicación de Android

Estoy intentando utilizar la API web segura de mi aplicación para Android. La API web utiliza la autenticación básica y el uso de un token generado por el servidor. He podido utilizar la API de la web utilizando curl como se muestra a continuación.

En primer lugar, para autenticar al usuario y obtener el token.

curl http://localhost:3000/api/api_keys -u '[email protected]:UserPassword'

returns {"token":"0d63b512573dce7be5eb53bab58a5625"}

En segundo lugar, utilizo el token para llamar a la API como un usuario autenticado.

curl http://localhost:3000/api/exams -H 'Authorization: Token token="0d63b512573dce7be5eb53bab58a5625"'

devuelve el objeto json apropiado.

El problema es cuando trato de llamar a la API web desde el cliente de Android utilizando el código de abajo, la API web no recoger el encabezado de autorización y, por tanto, lanza la solicitud.

 ... HttpClient client = new DefaultHttpClient(new BasicHttpParams()); HttpGet httpGet = new HttpGet(targetUrl.toString()); httpGet.setHeader("Content-type", "application/json"); httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("[email protected]", "Password!"), "UTF-8", false)); httpGet.addHeader("Authorization", "Token token=\"" + getToken() + "\""); try { HttpResponse response = client.execute(httpGet); ... 

¿Cómo debo autenticar la aplicación de Android en la API web?

Debe enviar la solicitud primero para obtener el token. A continuación, puede utilizar el token.

Me di cuenta de que estaba enviando las credenciales de usuario de nuevo al hacer la solicitud "autenticada". Esto hacía que el servidor ignorara el token y devolviera una respuesta 401 no autorizada.

Así que la solución fue eliminar la siguiente línea de mi "solicitud autenticada".

httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("[email protected]", "Password!"), "UTF-8", false));

Para ser claro, esta línea sigue siendo necesaria para la primera solicitud.

  • ¿Cómo comprobar si los datos móviles están realmente activos o si el wifi está realmente conectado a cualquier punto caliente?
  • Cómo guardar el archivo descargado en la tarjeta sd del gestor de descargas mediante programación en android
  • Pida al usuario que se conecte a Internet o salga de la aplicación (android)
  • Cómo comprobar la conectividad de Internet dentro de la red en Android (utilizando Internet de algún otro dispositivo a través de HOTSPOT)
  • Detectar si hay una conexión a Internet disponible en Android
  • Recuperación lenta de datos con android y parse.com
  • Compruebe la conexión de red y de Internet - Android
  • Detectar si el dispositivo Android tiene conexión a Internet
  • ¿Simular la conexión lenta a Internet en un dispositivo REAL?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.