我正在创建一个网站,用户可以在其中通过 facebook、twitter、linkedin、google plus 和常规表单流程登录/注册。
到目前为止,我这个过程的数据库结构是
**users_table**
id - username - password_hash - email - auth_key -date_created - last_login
**user_profile**
id - user_id (foreign_key) - first_name - last_name - gender - phone - photo
**facebook_users**
id - facebook_id - profile_link - user_id (foreign_key)
**linkedin_users**
id - linkedin_id - profile_link - user_id (foreign_key)
**have_social_account**
facebook(tinyint)[0-1] - twitter(tinyint)[0-1] - linkedin(tinyint)[0-1] - google(tinyint)[0-1]
Run Code Online (Sandbox Code Playgroud)
现在,当用户使用他的 facebook 登录时,例如我在用户表和 user_profile 上为他创建了一个带有附加信息的新记录,然后我将身份验证密钥和个人资料链接插入到 facebook_users 中(因为它是一个 facebook 登录),最后我插入一个facebook 下 have_social_account 中的新记录,值为 (1)。
但如果同一用户尝试使用他的linkedin 帐户登录;将使用新的 user_id 创建一条新记录,这就是我无法统一此用户帐户的原因。如果电子邮件相同,我可以处理它,但是如果用户为每个社交帐户使用不同的电子邮件地址怎么办。
任何人都可以帮助我制定此过程的最佳结构吗?提前致谢