tutorial registro loginmanager loginbutton crear con auth app android facebook servlets facebook-android-sdk

android - registro - import com facebook login loginmanager



Autenticación de Facebook a mi servidor con Android (2)

Entonces tiene: Facebook - Aplicación de Android - Su servidor web. Y su servidor web necesita saber que usted es el usuario de Facebook que está presentando. El problema es que no puede confiar en el cliente de Android por los datos que le proporciona.

Resolví el problema así:

  1. Autentica al usuario a Facebook desde la aplicación de Android,
  2. Obtener el token de autenticación de FB en la aplicación de Android,
  3. Reenviar el token de autenticación y el UID de Facebook desde Android al servidor web,
  4. En el servidor web, realice una llamada a la API de Facebook con el token enviado.

Si la llamada a la API de Facebook desde el servidor web devuelve una autenticación válida, y la identificación del usuario es igual a la presentada por la aplicación de Android, su servidor puede confiar en la identificación (y puede estar seguro de que la autenticación de Android es real)

Estoy construyendo una aplicación con los siguientes bloques:

Android - Lado del cliente, Servlets Java - Sever Side, aplicación de Facebook - se usa para autenticar usuarios y trabajar con sus datos.

Mi problema es el siguiente: me gustaría autenticar a mis usuarios a través de Facebook (como una solicitud enviada por el cliente de Android usando facebook-android-sdk a Facebook) pero luego me gustaría enviar solicitudes a mi servidor (que es implementado por servlets) y para validar de alguna manera que el usuario que envía la solicitud está autenticado en Facebook y mi aplicación.

Entonces estos son los pasos:

el usuario X está autenticado en Facebook y mi aplicación de Facebook usando facebook-android-sdk. X está enviando una solicitud a mi servidor

En cuanto al servidor, solo me gustaría saber que es un usuario adecuado el que está trabajando conmigo, no necesito que el servidor realice ninguna solicitud de Graph API.

¿Cómo puedo saber que X es válido en mi servidor? La autenticación se realizó en el lado del cliente en ese caso.


La mejor respuesta a esta pregunta (que incorpora información del comentario de tomas.tunkl) es la siguiente:

  1. Autenticar desde la aplicación de Android
  2. Obtener el token FB Auth de la autenticación en la aplicación
  3. Reenviar el token y fb UID al servidor web
  4. Llame al punto final de depuración como se describe aquí ( https://developers.facebook.com/docs/facebook-login/access-tokens/debugging-and-error-handling ); esto le dará la id de la aplicación que generó la aplicación. el token ASEGÚRESE de que el ID de la aplicación es SU IDENTIFICACIÓN DE APLICACIÓN (lo que significa que es un token de su aplicación móvil), de lo contrario alguien está secuestrando su aplicación usando un token de otra aplicación y está filtrando datos del usuario (como señaló Thomas developers.facebook.com/docs/facebook-login/security/… ). Eso es malo. También verifique is_valid / expires_at para asegurarse de que todavía sea un token válido de su aplicación.

(Desde que vinculé la documentación, también voy a poner un poco de información de ese enlace de manejo de errores y errores aquí para mostrar cómo hacer la llamada y lo que recibes :)

Al trabajar con un token de acceso, es posible que deba verificar qué información está asociada con él, como su usuario o vencimiento. Para obtener esta información, puede usar nuestra herramienta de depuración, o puede usar el punto final API.

Para usar la API, puede emitir una solicitud de Graph API:

GET /debug_token? input_token={input-token}& access_token={access-token}

input_token: el token de acceso del que desea obtener información

access_token: su token de acceso a la aplicación o un token de acceso de usuario válido de un desarrollador de la aplicación La respuesta de la llamada API es una matriz JSON que contiene un mapa de campos. Por ejemplo:

{ "data": { "app_id": 000000000000000, "application": "Social Cafe", "expires_at": 1352419328, "is_valid": true, "issued_at": 1347235328, "scopes": [ "email", "publish_actions" ], "user_id": 1207059 } }

Tenga en cuenta que el campo issued_at no se devuelve para tokens de acceso efímeros.

Esto garantizará que tenga un token válido para un usuario de Facebook que se haya generado a partir de su propia clave secreta para un usuario; lo que significa que se han autenticado correctamente.