附表设计 如何设计QQ、微信、微博等,第三方账号登陆?( 二 )

  • 客户端拿到access_token、openid、login_type(qq、wechat…)请求应用服务器 , 应用服务器拿到这些数据后就会根据对应的login_type去对应的用户中心进行access_token和openid进行校验 。
  • 校验不通过则返回对应错误码
    1. 校验通过后就会判断本地是否有这个login_type和openid是否存在 , 不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据 , 并且返回code值
    2. 如果已经存在 , 那就是进行登录操作 , 返回code值 。
    3. 客户端拿到code值后进行token值的换取 , 这个完全遵照oauth2.0的协议来走的 , 后续每次请求必须带上token , token值在服务端的时间比较久 , 因为我们想要做的是那种永不下线的操作 , 所以每次请求我们都将token过期时间进行累加 。
    4. 数据库设计表结构
    数据库的整理 用户基础表(users):
    附表设计 如何设计QQ、微信、微博等,第三方账号登陆?

    文章插图
     
    用户验证关联表(user_auth_rel)
    附表设计 如何设计QQ、微信、微博等,第三方账号登陆?

    文章插图
     
    本地用户表(user_local_auth)
    附表设计 如何设计QQ、微信、微博等,第三方账号登陆?

    文章插图
     
    第三方用户表(user_third_auth)
    附表设计 如何设计QQ、微信、微博等,第三方账号登陆?

    文章插图
     
    说明
    1. users表只是单纯针对我们业务侧的登录 , 主要是做自身业务的oauth2.0业务 , 
    2. user_local_auth是做自己用户名、密码登录 , 手机号码登录信息记录 , 
    3. user_third_auth是我们第三方用户体系的数据记录 , 
    4. user_auth_rel是用来关联我们users表与user_local_auth、user_third_auth 。
    5. 整个设计理念就是将自建用户与第三方在存储上区分 , 这在架构演进上也是合乎情理的 , 开始用户体系大多自建 , 而后才是对外接入 。
    5. 总结总的来讲 , 第三方用户的接入技术上来讲是比较简单的 , 这里设计多一个user_thirds是可以支持足够多的第三方接入 , 当然一般我们也就两三个登录就好 , 太多登录方不仅自身维护成本 , 界面摆盘也不好看不是 。
    希望大家能够通过以上学习 , 能够对于我们多账户登录有一个比较好的认知 , 这里设计方案不包含分表分库、没有服务化 , 就是简单直接的设计 , 当然用户量和需要的不一样 , 在这个基础上还要加很多东西 , 谢谢大家阅读 , 喜欢文章欢迎转发 , 点赞 。
    本文转载于公众号:低调的码农 方志朋

    【附表设计 如何设计QQ、微信、微博等,第三方账号登陆?】


    推荐阅读