设计第三方账号登陆基本思路

多账户的统一登陆
普遍页面如下:
设计第三方账号登陆基本思路
多用户下面的技术方案细节,以及相应的表设计,流程设计

  1. 引入第三方的账户方案:
    以QQ-SDK的登录逻辑的时序图
    设计第三方账号登陆基本思路
    说明:
    1)客户端自己调起登录的界面,进行输入用户名、密码,这里的是第三方的用户名,密码,登录成功后,会返回access_token openid expire_in,这过程会使用到oauth2.0,不过在sdk里面进行内置回调获取了
    2)客户端拿到access_token、openid、login_type(qq、wechat…)请求应用服务器,应用服务器拿到这些数据后就会根据对应的login_type去对应的用户中心进行access_token和openid进行校验。校验不通过则返回对应错误码
    3)校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值
    4)如果已经存在,那就是进行登录操作,返回code值。
    5)客户端拿到code值后进行token值的换取,这个完全遵照oauth2.0的协议来走的,后续每次请求必须带上token,token值在服务端的时间比较久,因为我们想要做的是那种永不下线的操作,所以每次请求我们都将token过期时间进行累加。

2.数据库设计
用户基础表(users)
设计第三方账号登陆基本思路
用户验证关联表(user_auth_rel)
设计第三方账号登陆基本思路
本地用户表(user_local_auth)
设计第三方账号登陆基本思路
第三方用户表(user_third_auth)
设计第三方账号登陆基本思路
说明
1)users表只是单纯针对我们业务侧的登录,主要是做自身业务的oauth2.0业务,
2)user_local_auth是做自己用户名、密码登录,手机号码登录信息记录,
3)user_third_auth是我们第三方用户体系的数据记录,
4)user_auth_rel是用来关联我们users表与user_local_auth、user_third_auth。
5)整个设计理念就是将自建用户与第三方在存储上区分,这在架构演进上也是合乎情理的,开始用户体系大多自建,而后才是对外接入。