/ / ¿Cómo manejar un usuario social ya registrado en frontend (django-rest-auth)? - django, django-rest-framework, django-rest-auth

¿Cómo manejar el usuario social ya registrado en frontend (django-rest-auth)? - django, django-rest-framework, django-rest-auth

He estado usando django-rest-auth, que ha sidoExcelente para el flujo de registro de correo electrónico. He estado tratando de implementar el inicio de sesión social (a través de FB), y en la última versión (v.0.9.3), parece que si alguien ya ha creado una cuenta por correo electrónico, solo genera un error si ese usuario intenta iniciar sesión Vía social. Este comentario está en el commit:

# We have an account already signed up in a different flow
+            # with the same email address: raise an exception.
+            # This needs to be handled in the frontend. We can not just
+            # link up the accounts due to security constraints

Un par de preguntas (publicado esto en el githubproblemas también): ¿Por qué es esto un problema de seguridad? ¿No es el punto central de la autenticación social que confía en el proveedor de OAuth (FB en este caso)? En segundo lugar, ¿cómo se supone que uno debe manejar esto en la interfaz? porque un sitio o aplicación agrega un inicio de sesión social más adelante en el ciclo de desarrollo). Me parece que la única opción que me queda es decirle al usuario "Lo sentimos, solo puedes iniciar sesión con tu cuenta de correo electrónico". O simplemente elegir tener FB Login o correo electrónico (o Twitter o etc), pero solo uno de ellos. ¿Me estoy perdiendo de algo? Me parece extremadamente limitante.

Respuestas

1 para la respuesta № 1

El problema de seguridad proviene del hecho de que es imposible verificar que la cuenta social sea exactamente el mismo usuario que se registró anteriormente.

Para adjuntar una cuenta social a un usuario existente en django-rest-auth necesitas usar una vista de conexión social. Aquí el ejemplo de s en docs: http://django-rest-auth.readthedocs.io/en/latest/installation.html#additional-social-connect-views.

Las vistas de conexión social son similares a las del inicio de sesión social regular, excepto que ya debe estar autenticado como usuario regular, para que la aplicación sepa que es usted, antes de poder adjuntar una cuenta social.

Entonces el flujo de ejemplo es el siguiente:

  1. Inicie sesión como usuario existente (registrado antes como una cuenta no social)

  2. Acceso /rest-auth/facebook/connect/ para adjuntar la cuenta social de Facebook a este usuario existente.