validator practices name large example cards card best database-design facebook openid twitter

database-design - practices - twitter cards types



Esquema de base de datos para mĂșltiples autenticaciones, Facebook Connect, Twitter, OpenID, etc. (2)

Estoy creando una aplicación con la que quiero interactuar con Facebook Connect, Twitter, OpenID y potencialmente con otras redes sociales. Los usuarios podrán iniciar sesión utilizando cualquier número de estos métodos al mismo tiempo. Mi aplicación utiliza MySQL como una base de datos backend.

¿Alguien me puede dar una guía sobre cómo debería verse mi esquema de db para capturar información de usuarios de varias redes sociales al mismo tiempo? Una idea que tengo (basada en mi lectura en línea) es algo como:

Usuario {userid, ...}
UserFacebook {fbid, userid, ...}
UserTwitter (twid, userid, ...}
etcétera etcétera.

Luego, para obtener una imagen completa de un usuario, me uniría en todas las tablas de usuarios. ¿Es así como lo hacen otros sitios o hay una forma más inteligente / mejor?


Esto es lo que hago, separo la tabla de cuentas del proceso de autenticación, por ejemplo, la cuenta tiene el nombre de la cuenta, la fecha de registro y la identificación única tal vez. Luego puedo crear 4 tablas adicionales, por ejemplo: users_openid, users_facebook, users_twitter y users (para su nombre de usuario normal / autenticación del sitio web), todas tienen una clave externa (account_id) que enlaza con la tabla de la cuenta.

De esta manera, separa cómo el usuario inicia sesión en su sistema y la cuenta real.


Le sugiero que tenga su esquema de usuario en dos tablas: Usuarios e Identidades. Las identidades deben tener: Id, Id. De usuario, Adaptador, Hash.

Para el adaptador de autenticación de nombre de usuario / contraseña, el Hash será una contraseña con hash (MD5 / SHA1 por ejemplo), mientras que otros adaptadores (Facebook, Twitter, etc.) serán el token proporcionado por Auth Provider.

Buena suerte.