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

标签 mysql database facebook oauth schema

我想完成与 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/

相关文章:

mysql - 集合作为 SQL 中的数据类型

mysql - 多个表的连接出错

php - 如何在 Laravel 中划分读/写数据库设置?

java - 用于将帖子/评论的多个数据对象序列化为单个序列化数据的 Protocol Buffer

facebook - 如何使用 Proxygen 和 Folly 发送 HTTP 分块响应来模拟视频流?

php - MySQL WHERE 变量

java - 结构变化的休假报告的数据库架构

ios - 解析 Facebook - clang : error: linker command failed with exit code 1 (use -v to see invocation)

javascript - 响应未定义/到达太晚 - Facebook API FB.api

mysql:我想在我的行中包含一个值