数据库架构允许同一帐户有多个登录机会(Facebook-Connect、Oauth、OpenID 等)

Ser*_*e85 2 mysql database schema facebook oauth

我想完成与这个问题几乎相同的事情,即存储来自多个来源(Facebook、Twitter、LinkedIn、openID、我自己的网站等)的身份验证数据,以便一个人可以从任何/登录到他们的帐户所有提到的提供商。

唯一需要注意的是所有用户数据都需要存储在一个表中。

有什么建议么?

如果没有干净的方法来完成此操作,那么最好为所有可能的登录方法提供大量列,或者创建额外的表来处理具有与用户表相关的外键的登录方法(如本答案中所述) ?

Ben*_*ton 5

也许您想创建一个专用于帐户类型的表以及一个用于实际用户的表。

假设您有一个用户表,其中每个用户都有一个 auto_increment uinique ID。然后,您想要创建另一个表示例:user_accounts,具有它自己的 auto_icnrement ID,另一列用于关系 ID(到用户表)以及用于帐户类型的第三(或/和)第四表/用于身份验证的额外数据(如果需要)。

然后,您可以为每个用户的每种帐户类型插入一条记录。基本上它可能看起来像这样:

user_accounts

| ID | User_ID | account_type       | authentication
| 1  | 1       | facebook           | iamthecoolestfacebookerever
| 2  | 1       | google             | mygoogleaccount
Run Code Online (Sandbox Code Playgroud)

以最简单的形式。您可能会存储与此不同的数据,但希望您明白这一点。