如何为接受来自多个站点(例如 facebook connect、google、flickr 等)的登录的站点设计架构?

Dor*_*ron 7 schema best-practices

我正在构建一个站点(“站点”),并且正在考虑如何为其设计数据库架构。

我有一些会影响结果的场景:

  • 用户可以选择在本站注册一个本地账号,这将使他日后使用该账号登录自己的本站账号。
  • 用户可以选择通过另一个站点(“外部站点”)(例如 facebook connect、google、foursquare 等)登录,这将使他将来可以使用该站点登录他在该站点帐户。
  • 他选择哪种登录方法(本地帐户或外部站点帐户)并不重要,用户将能够使用外部站点(例如 facebook、twitter、instagram 等)在站点上验证他的帐户以供使用他在外部站点上的数据(例如他在 twitter 上的推文,他在 flickr 上的照片等),在站点中

我应该如何设计数据库的架构?

对于前两个场景,我想有一个名为的表Users,它有一个id, 和一个type字段。类型参考不同的表,例如FacebookUsersGoogleUsers,每个具有user_id场-其具有外国相对于Users.id场-和其他领域,如first_nameprofile_picture等。

然而:

  1. 我不确定使用这种方法有多聪明。
  2. 我不知道如何以这种方法实现第三种场景。

Cod*_*awk 1

stackoverflow上也有类似的问题

解决方案是

您的表中需要 2 个附加字段,一个是登录源(twitter、openID、facebook),另一个是源用户 ID(从 twitter、openID、facebook 提供的 ID)我建议将其设置为字符串,因为某些登录来源的用户 ID 中包含字母,而不仅仅是数字。更多的

  • 我不确定使用这种方法是否明智。

这种方法很好,实际上网站也选择了它。请参阅SO登录页面 https://stackoverflow.com/users/login

  • 我不知道如何以这种方法实现第三种情况。

我认为只有第三方网站提供访问权限,您才能实现此目的。这个问题是题外话,你可以在 stackoverflow中提问