Tengo un par de aplicaciones de Rails que quiero integrar con OmniAuth, pero hay un problema conceptual que tengo con él que me gustaría descubrir primero . Tenga en cuenta la situación siguiente:OmniAuth: Protección contra múltiples cuentas para el mismo usuario
- Su aplicación, Foo, admite los inicios de sesión de OmniAuth a través de Twitter y Facebook.
- Joe llega a su sitio e inicia sesión a través de su cuenta de Twitter. Esto crea un nuevo usuario en Foo y lo asocia con esta nueva autorización de Twitter.
- Joe cierra la sesión de Foo y se olvida del sitio durante seis meses.
- Joe regresa a Foo, sin recordar que ha iniciado sesión previamente con Twitter.
- Joe se conecta con Facebook. Como todavía no ha iniciado sesión con su autorización original de Twitter, no hay forma de detectar que él es, de hecho, el mismo Joe, y se crea una cuenta nueva.
- Joe descubre su cuenta anterior, y ahora está frustrado de que su contenido anterior esté vinculado a esta cuenta anterior, y que no puede iniciar sesión de manera intercambiable con Twitter y Facebook.
Dado que Twitter no proporciona a Foo una dirección de correo electrónico, no existe un identificador universal para detectar que los dos Joes son el mismo Joe. Puede decidir apoyar solo a los proveedores que le proporcionen la dirección de correo electrónico del usuario, pero esto no ayuda si el usuario se ha registrado con diferentes direcciones de correo electrónico en diferentes proveedores.
La única otra solución que puedo pensar es darle al usuario una forma de fusionar dos cuentas existentes. Eso es un gran dolor de cabeza en comparación con la relativa facilidad de todo lo demás cuando se usa OmniAuth. Si esta es la única solución, ¿alguien ha encontrado una guía/tutorial que muestre un ejemplo de cómo se podría hacer esto? Me sorprende que este tema no haya recibido más atención dada la popularidad de OmniAuth.
Gracias!
No veo una solución perfecta para este problema. Por lo tanto, he decidido ir con proveedor único por ahora hasta que encuentre una solución sólida para esto. – hnprashanth
Hola Jimmy Cuadra, puedes mirar try.discourse.org. Discurso ha implementado múltiples opciones de registro utilizando omniauth. Su código fuente está disponible en GitHub. –