我想完成与 this question 几乎相同的事情,它存储来自多个来源(Facebook、Twitter、LinkedIn、openID、我自己的网站等)的身份验证数据,以便一个人可以从任何/所有提到的提供商登录其帐户。
唯一需要注意的是所有用户数据都需要存储在一个表中。
有什么建议吗?
如果没有干净的方法来完成此任务,那么最好为所有可能的登录方法提供大量列,或者创建额外的表来处理与外键相关的登录方法用户表(如 this answer 中所述)?
最佳答案
也许您想创建一个专用于帐户类型的表以及一个用于实际用户的表。
假设您有一个用户表,其中每个用户都有一个 auto_increment uinique ID。然后,您想要创建另一个表示例:user_accounts,它有自己的 auto_icnrement ID、关系 ID 的另一列(到用户表和用于帐户类型的第三(或/和)第四个表/如果需要的话用于身份验证的额外数据。
然后,您可以为每个用户的每种帐户类型插入一条记录。基本上它可能看起来像这样:
用户帐户
| ID | User_ID | account_type | authentication
| 1 | 1 | facebook | iamthecoolestfacebookerever
| 2 | 1 | google | mygoogleaccount
以最简单的形式。您可能会存储与此不同的数据,但希望您明白这一点。
关于mysql - 数据库架构允许同一帐户有多个登录机会(Facebook-Connect、Oauth、OpenID 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846465/