Arquitectura para fusionar varias cuentas de usuario juntas

Bien, tengo un sitio web donde puedes registrarte e iniciar sesión. También puede iniciar sesión con su cuenta de facebook, twitter o linkedin.

Es importante que los usuarios solo tengan una cuenta registrada. Entonces, de alguna manera, quiero fusionar las cuentas de los usuarios si usan diferentes métodos para iniciar sesión. ¿Cuál es la mejor solución para resolver esto?

Por ejemplo, el usuario inicia sesión con su cuenta de Facebook. Utilizo los datos para registrar una cuenta para él automáticamente. ¿Debo enviar un correo electrónico con un nombre de usuario y contraseña de nuestro sitio web? (Si esto está de acuerdo con la política de Facebook). ¿Debo darles una segunda pantalla donde puedan completar un nombre de usuario y contraseña? Pero esa no es la idea detrás de iniciar sesión con su cuenta de Facebook. Debería simplificar su procedimiento para participar.

También es posible que el usuario se haya registrado en nuestro sitio web y la próxima vez que inicie sesión con su cuenta de Twitter. ¿Cómo puedo fusionar estas 2 cuentas como una? ¿Cuál es la mejor manera?

Así que básicamente mi pregunta es: tengo 4 formas diferentes en que un usuario se convierte en miembro de nuestro sitio web. ¿Cómo puedo asegurarme de que estas 4 formas solo creen una cuenta si un usuario decide usar varias formas? ¿Cuál es el mejor flujo para asegurarse de que no se convierta en una molestia para el propio usuario?

Editar

3 años después de hacer esta pregunta, estoy respondiendo yo mismo en una serie de artículos:http: //www.sitepoint.com/series/using-social-networks-as-a-login-system

Respuestas a la pregunta(7)

Su respuesta a la pregunta