Pregunta

He configurado Auth de usuarios para mi aplicación Rails con Disvise y Omniauth. Ahora me pregunto dónde debería comenzar a usar la misma autenticación para una aplicación de Android y iPhone que quiero crear.

¿Debo usar una versión móvil de mi /auth /facebook o debo enviar directamente una solicitud desde la aplicación?

Esta es una pregunta bastante general, pero no he encontrado que no ver.

EDITAR: Acabo de agregar Auth Token a la aplicación para usar con la API RESTful, me estoy perdiendo la parte Omniauth/Facebook-Token.

¿Fue útil?

Solución

Muy bien, estoy respondiendo a mi propia pregunta.

Si usa el SDK de Facebook, el SSO funciona bastante bien en el dispositivo, pero el token que recibe no es lo mismo que recibirá en su aplicación Rails. Aparentemente, Facebook crea diferentes tokens según el soporte.

Entonces, lo que hice fue: una vez que recibo el token en el dispositivo Android, lo envío a mi aplicación Rails a través de la URL:

http://myapp/check_mobile_login?token=FB_MOBILE_TOKEN

Luego es atrapado por mi controlador de aplicación, que usa el token con la gema FB_GRAPH para obtener datos de usuario. Si el token es válido, recibiré algunas piezas de información. Luego consulto con mi base de datos y, si encuentro el mismo UID, entonces mi usuario se autentica y le envío a la Authentificable_Token desde dispositivos.

Y el borrador del código:

    def check_mobile_login
        token = params[:token]

        user = FbGraph::User.me(token)
        user = user.fetch

        logged = User.find_by_uid(user.identifier)

        respond_to do |format|
            format.html # index.html.erb
            format.json { render :json => logged.authentication_token }
        end
    end

Si alguien tiene una mejor solución, me alegraría escuchar eso :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top