Autenticar credenciales recibidas desde facebook en mi propia API REST

Mi equipo y yo estamos trabajando en una red social móvil nativa para Android que permite a los usuarios iniciar sesión con Facebook. Ive logró implementar el SDK de Facebook para Android, pero estoy luchando para averiguar cómo autenticar correctamente / de forma segura a un usuario que inicie sesión usando Facebook con las credenciales recibidas de Facebook solo. Actualmente aquí es cómo mi sistema va:

Paso 1.Desde el cliente de Android, el usuario presiona iniciar sesión con Facebook y concede permisos a mi aplicación.

Paso 2. Cuando el usuario conceda nuestros permisos, Facebook nos envía una respuesta que incluye la identificación de usuario de los usuarios fb, correo electrónico y un token (entre otros datos, si es la primera vez que el usuario ha iniciado sesión con Facebook)

Paso 3. Se envía información a nuestra API para autenticación

Y esto es donde im un poco claro …. ¿Cómo puedo validar las credenciales de facebook en mi servidor?

A partir de ahora im acaba de comprobar mi db para un usuario existente con el fb_uid y fb_email recibido, pero nadie puede obtener anyones fb_uid y no es mucho más difícil encontrar el correo electrónico que utilizaron para registrarse en facebook que significa que alguien hipotéticamente podría fácilmente hackear Otra cuenta de usuarios con una solicitud falsa http.

El access_token , si es válido, le permitirá acceder a algunos de los datos de Facebook de usuarios a los que su aplicación ha solicitado permiso de acceso. Una forma de validar que las credenciales que está recibiendo son correctas es usar ese access_token para consultar a Facebook.

Por ejemplo, esta página sugiere cómo abrir las propiedades access_token mediante una llamada GET :

 GET graph.facebook.com/debug_token? input_token={token-to-inspect} &access_token={app-token-or-admin-token} 

Que luego devuelve:

 { "data": { "app_id": 138483919580948, "application": "Social Cafe", "expires_at": 1352419328, "is_valid": true, "issued_at": 1347235328, "metadata": { "sso": "iphone-safari" }, "scopes": [ "email", "publish_actions" ], "user_id": 1207059 } } 
  • ¿Cómo puedo enviar un mensaje a un dispositivo usando C2DM desde un servidor que ha sido autenticado con OAuth2?
  • ¿Un buen tutorial para usar AccountManager en Android?
  • Google Plus SignIn / oAuth2 - lanzamiento del lado del servidor TokenResponseException: 401 no autorizado
  • Android Jtwitter, problemas de autenticación
  • ¿Cómo utilizar el tipo implícito de subvención en OAuth 2.0 para aplicaciones móviles?
  • Cómo manejar el error redirect_uri_mismatch cuando la aplicación Android obtiene acceso sin conexión para el back-end de la Web?
  • Cómo acceder a OAuth 2.0 mediante las pestañas personalizadas de Chrome (Fitbit API)
  • ¿Cómo evitar la "Acción completa con" emergente con devoluciones de llamada de OAuth de Google?
  • Implementación de OAuth2 con AccountManager, Retrofit y Dagger
  • ¿Cómo crear una cuenta de usuario _segmentar desde un token de Google para Android?
  • Acceso a Google Cloud Storage desde Android OAuth2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.