OAuth(Facebook,Twitter)和基本登录 - 用户表

Tam*_*Pap 14 mysql twitter facebook login oauth

我想让用户使用他们的Facebook或Twitter帐户登录我的网站,但如果他们没有,那么注册一个新帐户,并使用我的网站的基本登录.

但是我的用户表应该如何:

我的想法:

  • id(主要,自动增量)
  • 用户名(如果是oauth login => ouath_provider + oauth_id,例如:fb_100001557958700)
  • 密码(由用户选择的密码或在oauth的情况下随机生成的密码)
  • 名称(要显示的名称)

你怎么看?或者我应该有2个表,1个用于基本登录,还有1个用于oauth登录?但那么用户如何拥有独特的ID呢?

提前感谢您的评论.

Gaz*_*ler 21

根据我的经验,您最好将授权存储在一个表中,将用户数据存储在另一个表中.

授权:

network     - Varchar(255)  #Twitter/Facebook/Openid/whatever
network_id  - varchar(255)  #Users id for that social network.
user_id     - int
Run Code Online (Sandbox Code Playgroud)

用户:

id (primary, auto increment)
name
password
username
Run Code Online (Sandbox Code Playgroud)

有了这种结构,如果你想让同一个用户在将来某个时候同时使用Twitter和Facebook登录,那也是可能的.

  • 如果是OAuth,用户的用户名和密码是什么?是空值,还是生成某些内容,或者您​​的用户每次都必须选择用户名和密码? (2认同)
  • 理想情况下,您可以让用户注册用户名(可以从oauth提供程序自动填充)和密码.如果用户被锁定在他们的推特或Facebook帐户之外,这将为您提供后备支持. (2认同)