数据库表设计3:、QQ第三⽅多账号登陆
前⾔:相⽐于本地注册,第三⽅登录⼀般来说⽐较⽅便快捷。因为显著降低了⽤户的注册或登录成本,从⽽减少由于本地注册的繁琐性⽽带来的隐形⽤户流失,最终提⾼注册转化率。现在⼏乎⼤部分的 App 都⽀持使⽤多个第三⽅账号进⾏登录,如:、QQ、微博等,我们把此称为多账号统⼀登陆。⽽这些账号的表设计,流程设计⾄关重要,不然后续扩展性贼差。
⼀、常见的四种注册登录⽅式
①⽤户名+密码
这种⽅式在很多初期⽹站建设会使⽤,先注册,再进⾏登录,在⽼⼀点的cms系统中都能到这个影⼦。
②⼿机号+短信验证码
③引⼊第三⽅账户登录⽅案
常见的第三⽅社交登录:、微博、QQ等
④本机号码⼀键登陆
获取到当前⼿机使⽤的⼿机卡号,直接使⽤这个号码进⾏登录,这就是⼀键登录。
⼀键登录能不能做,取决于运营商是否开放相关服务,这也是为什么过去没有⼀键登录,直到最近三⼤运营商都有了⾃⼰的开放平台:⼆、什么是第三⽅登录
所谓的第三⽅登录,是说基于⽤户在第三⽅平台上已有的账号和密码来快速完成⼰⽅应⽤的登录或者注册的功能。⽽这⾥的第三⽅平台,⼀般是已经拥有⼤量⽤户的平台,国外的⽐如Facebook,Twitter等,国内的⽐如微博、、QQ等。
使⽤第三⽅登录后,要求⽤户补充⼀些信息(⼿机号、邮箱等等),如果⽤户信息已存在,则直接绑定;(在⽤户经过新浪微博或QQ授权登陆后,你的系统⾃动弹出要求该⽤户补充少量信息的对话框)
如果为了⽤户体验更好,可以将第三⽅登录和账号绑定进⾏解耦:在应⽤运⾏过程中的⼀些关键点上卡住,以⽹络安全的名义,在那⾥让⽤户补充⼿机等信息(嘿嘿)。
改密码qq
这⾥以QQ-SDK的登录逻辑, 我们先来⼀波时序图。
三、第三⽅多账号登录表
⽤户表设计:
id user_name user_password user_mobile state more
⽤户id⽤户名⽤户密码⼿机号码账号状态其他信息
3.1、以微博登录举例
进⼊ Web2.0 时代 ,微博开放了第三⽅⽹站登录, 产品经理说这个我们得要, 加个⽤微博帐号就能登录我们的 App吧,⽽且得和我们⾃⼰的⽤户表关联。
流程:
1. 客户端调⽤微博登录的界⾯,进⾏输⼊⽤户名、密码,登录成功后,会返回 access_token,通过 access_token调取 API接⼝获取⽤户
信息。
2. 服务端通过⽤户信息在我们⽤户表创建⼀个账号,以后,该第三⽅账号即可通过该微博账号直接进⾏登陆。
微博⽤户信息表设计:
id user_id uid access_token
主键id⽤户id微博唯⼀id授权码
噩梦来临
紧接着, QQ⼜开放⽤户登录了, 开放⽤户登录了,Github开放⽤户登录了。。。。。。⼀下⼦要接⼊好多家第三⽅登录了, 只能按照“微博⽤户信息表” 新建⼀个表,重写⼀套各个第三⽅登录。
3.2、第三⽅登录表统⼀设计
⽤户基础信息表:
id user_name user_password user_mobile state more
⽤户id⽤户名⽤户密码⼿机号码账号状态其他信息
⽤户授权信息表:
id user_id login_type openid access_token
主键id⽤户id第三⽅登录类型(/QQ/微博等)第三⽅应⽤的唯⼀标识 第三⽅的保存 token
说明:
1. ⽤户表分为 ⽤户基础信息表 + ⽤户授权信息表;
2. 所有和授权相关,都放在⽤户信息授权表, ⽤户信息表和⽤户授权表是⼀对多的关系 。
参考链接: