OpenID,Oauth的数据库设计:Twitter和Facebook

jon*_*nie 13 sql database

我想允许我的用户使用OpenID,Twitter和Facebook登录,如果他们选择不直接注册到我的网站.

在他们使用oAuth/OpenID登录之后(在你想知道之前:是的,我已查找了差异*),我会要求他们选择用户名.

我需要的只是他们的电子邮件地址和全名,(以及一个IP地址,但现在不相关).

我现在使用的当前表是:

author (id, fullname, username, password, salt, ip_address, email_hash, verified, created, deleted)
Run Code Online (Sandbox Code Playgroud)

密码是哈希值,email_hash用于恢复丢失的用户名.

如何更改此结构以使用一个用户名支持OpenID/oAuth帐户?

*或OAuth?,OpenID的?都不是?我的网站应该支持哪一个?

Gaz*_*ler 7

你的表中需要2个额外的字段,一个是登录源(twitter,openID,facebook),另一个是源用户id(来自twitter,openID,facebook提供的id)我建议将这个字符串作为一些登录来源的用户ID中包含字母,而不仅仅是数字.

然后,当他们登录时,您已经知道他们尝试登录的来源,您可以将其与表中的远程ID结合起来,如果存在,请将其登录,如果没有,请将它们发送到您的注册表单以获取它们填写他们的姓名和电子邮件.

在这种情况下你可以做的另一件事是有一个连接表:

remote_source_users (user_id:integer, remote_source_id:string, remote_source:string)
Run Code Online (Sandbox Code Playgroud)

这意味着您可以为同一用户支持多个远程帐户.