ios api ios5 oauth-2.0 facebook-oauth

ios - Flujo de "inicio de sesión social" de OAuth2(permitir la autenticación OAuth2 a través de Facebook/Twitter): ¿hay ejemplos/publicaciones?



oauth 2.0 swift (4)

Cree diferentes ID de clientes de OAuth para sus proveedores de inicio de sesión social.

Ejemplo:

Facebook - ID de cliente n. ° 1 Twitter - ID de cliente n. ° 2

Crea tus rutas públicas para tus flujos sociales.

Ejemplo:

http://www.test.com/auth/facebook/ http://www.test.com/auth/facebook/callback/

Una vez que la devolución de llamada del proveedor social sea exitosa, deberá obtener los datos de su almacén de datos para el usuario en cuestión y luego generar el token de acceso con el alcance predefinido que quiera otorgar para el ID de cliente en cuestión.

En el caso de que haya un tercero que intente conectarse directamente con sus propios clientes al intentar usar su API, tendrá que ser un proceso de 2 pasos.

Primero, ellos (el cliente) tenían que pasar por el proceso de inicio de sesión social como se explicó anteriormente.

Luego, en la devolución de llamada exitosa del proveedor social, deberá mostrar una interfaz (probablemente basada en la web) al cliente, lo que les permitirá aceptar / denegar el alcance de los derechos solicitados por el tercero. En el bit de inicio de sesión social inicial, obviamente tendría que pasar mucho tiempo o almacenar el alcance solicitado por la tercera parte para pasar el paso de devolución de llamada del proveedor social.

Estoy desarrollando una aplicación móvil nativa para una aplicación de red social personalizada basada en la web. Estamos creando una API REST para comunicarnos con el servidor web, y hemos elegido OAuth2 como el método de autenticación (el grant_type=password flujo de grant_type=password ).

La aplicación web permite a los usuarios iniciar sesión y registrarse utilizando servicios externos (es decir, Facebook y Twitter). Necesitamos permitir lo mismo también en la aplicación móvil. La pregunta es: ¿cómo podemos hacer eso?

La aplicación móvil de Pinterest es capaz de gestionar la situación (ver imagen adjunta). ¿Cuál es el flujo que se ha utilizado aquí?

¿Se comportan como una aplicación clásica de OAuth (la aplicación móvil que actúa como cliente de OAuth directamente con la API de Facebook?). Si es así, ¿cómo puede autenticarse la aplicación móvil con el servidor de Pinterest? ¿Está pasando el token de acceso de Facebook OAuth como credenciales?

Representación gráfica del problema (ver la flecha marcada con el símbolo ???? ):

Website API Mobile app Facebook OAuth + + + | | | | | /oauth2/token | | +------------------------------>| | | | | | OAuth Access Token | | |<-----------------------------+| | | | | ???? | | |- - - - - - - - - - - - - -| | | | | | | | | OAuth Access Token | | |+------------------------->| | | | | | | | | API Usage (w/ token) | | |+------------------------->| | |<-------------------------+| | | | | |+------------------------->| | |<-------------------------+| | | | | | ... | | + + +

Actualización: esta pregunta es bastante similar a la mía ... Si este es el camino correcto a seguir, entonces el segundo + tercer paso (la transmisión del token de Facebook a nuestra API personalizada, más la validación del token en sí) no podría ser ¿Un tipo de concesión OAuth2 adicional (es decir, facebook_token )?


No soy un desarrollador de iOS, pero actualmente estoy desarrollando un flujo de trabajo similar en un entorno .NET, utilizando la biblioteca de código abierto DotNetOpenAuth. Tal vez echarle un vistazo puede ayudar.

Primero: la metodología de autenticación depende de los proveedores que desea admitir.

Algunas lecturas que pueden aclarar:
http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing http://openid.net/get-an-openid / what-is-openid /
http://blog.bobcravens.com/2010/08/openid-and-oauth-using-dotnetopenauth-in-asp-net-mvc/ http://.com/questions/7996124/how-to-authorize- aplicaciones-móviles-con-un-tercero-por-una-pero-conexión-a-mi-servicio

Flujo de trabajo de autenticación genérico:
1. La aplicación web comienza presentando un área que le permite al usuario seleccionar entre varios proveedores de OpenID / OAuth.
2. Su aplicación redirige al servidor del proveedor (después de que sea posible agregar cierta información de la aplicación a los datos de publicación, consulte la referencia de la API del proveedor específico para obtener más detalles). Tanto OpenID como OAuth utilizan una serie de redirecciones para autenticar al usuario. La clave es que la autenticación se produce en el sitio del proveedor y ahí es donde se almacenan las contraseñas.
3. El usuario inicia sesión en el proveedor seleccionado, luego se produce una nueva redirección a su sitio (a través de un mecanismo de devolución de llamada URL).
4. Esta redirección incluye información sobre el usuario autenticado que proporciona los proveedores de OpenID / OAuth. Como mínimo, la redirección proporciona un ''nombre de usuario'' a su aplicación.
5. Utilice esta información para verificar si el usuario autenticado puede ingresar a su sitio.


Puede intentar usar el token de acceso fb que acaba de recuperar en su dispositivo móvil. (puede ser cualquier otro proveedor). Envíelo a su servidor para iniciar sesión / registrarse / ambos servicios web. En el lado del servidor, puede verificar quién es el usuario utilizando fb sdk y el token de acceso, iniciar sesión en el usuario y enviarle la cookie / sesión.


Stefano

Usamos StackMob para esto. Funciona muy bien y es muy simple de implementar.

El SDK de StackMob ofrece seguridad y autenticación OAUTH2 a través de Facebook y Twitter.

Actualización : StackMob ya no existe a partir de mayo de 2014