前言:相比于本地注册,第三方登录一般来说比较方便快捷。因为显著降低了用户的注册或登录成本,从而减少由于本地注册的繁琐性而带来的隐形用户流失,最终提高注册转化率。现在几乎大部分的 App
都支持使用多个第三方账号进行登录,如:微信、QQ、微博等,我们把此称为多账号统一登陆。而这些账号的表设计,流程设计至关重要,不然后续扩展性贼差。
一、常见的四种注册登录方式
①用户名+密码
这种方式在很多初期网站建设会使用,先注册,再进行登录,在老一点的cms系统中都能找到这个影子。
②手机号+短信验证码
③引入第三方账户登录方案
常见的第三方社交登录:微信、微博、QQ等
④本机号码一键登陆
获取到当前手机使用的手机卡号,直接使用这个号码进行登录,这就是一键登录。
一键登录能不能做,取决于运营商是否开放相关服务,这也是为什么过去没有一键登录,直到最近三大运营商都有了自己的开放平台:
二、 什么是第三方登录
所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebook,Twitter等,国内的比如微博、微信、QQ等。
使用第三方登录后,要求用户补充一些信息(手机号、邮箱等等),如果用户信息已存在,则直接绑定;(在用户经过新浪微博或QQ授权登陆后,你的系统自动弹出要求该用户补充少量信息的对话框)
如果为了用户体验更好,可以将第三方登录和账号绑定进行解耦:在应用运行过程中的一些关键点上卡住,以网络安全的名义,在那里让用户补充手机等信息(嘿嘿)。
这里以QQ-SDK的登录逻辑, 我们先来一波时序图。
三、第三方多账号登录表
用户表设计:
id | user_name | user_password | user_mobile | state | more |
---|---|---|---|---|---|
用户id | 用户名 | 用户密码 | 手机号码 | 账号状态 | 其他信息 |
3.1、以微博登录举例
进入 Web2.0
时代 ,微博开放了第三方网站登录, 产品经理说这个我们得要, 加个用微博帐号就能登录我们的 App
吧,而且得和我们自己的用户表关联。
流程:
-
客户端调用微博登录的界面,进行输入用户名、密码,登录成功后,会返回
access_token
,通过access_token
调取API
接口获取用户信息。 -
服务端通过用户信息在我们用户表创建一个账号,以后,该第三方账号即可通过该微博账号直接进行登陆。
微博用户信息表设计:
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 |
说明:
-
用户表分为
用户基础信息表
+用户授权信息表
; -
所有和授权相关,都放在用户信息授权表, 用户信息表和用户授权表是一对多的关系 。
参考链接: