2012-06-17 20 views
12

Actualmente estoy compilando una aplicación para iPhone con backend de rieles. Estoy utilizando únicamente el inicio de sesión único (SSO) de Facebook en el iPhone y la autenticación funciona muy bien en el extremo del cliente bastante bien. Estoy usando el dispositivo en los rieles como back-end.Autenticación de rieles con Access_token de Facebook

NOTA he consultado ya Design for Facebook authentication in an iOS app that also accesses a secured web service

veo que maquinan tiene algo llamado token_authenticable que es esencialmente el "billete" que se describe en el paso 5 de dicho hilo. Este es el flujo de corriente veo

  1. usuario se conecte a facebook SSO en el teléfono
  2. usuario hace una llamada a myserver.com/sessions/fb_sso con {señal_acceso: X}
  3. En el lado del servidor (en SessionsController # fb_sso, voy a hacer una llamada a la API de facebook con la señal_acceso
  4. Si señal_acceso es válida, compruebe si existe el usuario en dB. Si no existe el usuario, crear un nuevo usuario
  5. Ahora podemos volver { user_id: X, devise_auth_token: Y} volver a la llamada en 1)

Esto es bastante directo. Sin embargo, tengo un par de preguntas:

  1. Con la devise_auth_token, ¿significa que ya no tengo que llamar sign_in ("usuario", de recursos) de legado? (se encuentra aquí http://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/)
  2. ¿Dónde será el mejor lugar para poner el código para 3-4?
  3. Parece que no puedo encontrar mucho en Google sobre este tema. ¿Por qué hay tan pocos tutoriales para un proceso tan común? ¿Me estoy perdiendo algo descaradamente obvio?
+2

¿Está utilizando la gema OmniAuth para la conectividad de facebook? Combinando ide y omniauth se ocupa de 3 y 4 para ti! – MBHNYC

+0

@MBHNYC: corrígeme si me equivoco, pero esto solo se aplica cuando el usuario inicia sesión en el sitio web. En el caso del OP, el usuario inicia sesión a través de la aplicación iphone. El sitio web no ve el flujo. –

+0

sí, pero aún está transmitiendo la misma información a Facebook y las devoluciones de llamadas se pueden modificar para que no muestren ninguna vista (o lo que requiera la aplicación iOS) de todos modos, si genera/anula todos los controles/vistas de omneuth/idetouth, OP debe tener todas las herramientas programáticas para cumplir con la solicitud. – MBHNYC

Respuesta

0

Tiene que usar el mismo token en el servidor y el cliente ios. Una solución simple es poner toda la lógica en el lado del servidor por dispositivo + omniauth, iOS solo maneja la IU y la respuesta desde el lado del servidor. Si desea obtener token de iOS, como el SDK de Facebook iOS, debe indicar el token al lado del Servidor, pero no parece seguro.

1

¿Por qué no puedes usar omniauth-facebook joya. Es una solución muy simple para obtener el token de acceso porque si usas el dispositivo, su potencial se duplicará. Asegúrese de que necesita obtener token de acceso diferente en el momento de inicio de sesión diferente.

Usted puede ir a través de este enlace https://github.com/pramodv-nyros/social-login-in-rails

Cuestiones relacionadas