第三方登陆理解

前言

今天注册杭电OJ账号时发现能qq登陆,点了用手机扫二维码成功登入,但要求与该OJ系统已有账号绑定,这引发了我对第三方登陆的思考,要绑定的吗?印象中有的要绑定,有的qq登陆后就不用处理了能正常使用了,一直没弄明白也没去想,虽然是很老的东西了,但自己理解了的就值得记录。

理解

A系统(网站或app)使用了qq第三方登陆,即意味着有至少有2种方式可能登陆,一种是通过qq登陆,另一种是通过系统账号登陆(非必定存在)。

通过qq登陆

  • A系统用户表设计举例,字段:username,password,关联qq号
  • 流程:
    1. 用户在A系统界面填写qq账号密码(或用手机qq扫二维码)。
    2. A系统将qq账号密码用curl或guzzle等方式post到qq指定的接口
    3. qq服务器进行验证,匹配返回true及qq账号,qq头像,昵称等qq对A系统授权的数据,否则返回false。
    4. 若返回的是true,A系统在用户表关联qq字段找qq账号,存在则显示登陆成功
  • 流程说明
    • 第一步的数据肯定经过加密,A系统是无法看到的,qq服务器才有密钥。这才能保证用户的qq机密数据不泄露,但具体是如何实现的呢?在客户端就对输入进行加密?也没用啊,客户端代码是A系统写的,我不按qq文档的要求加密qq也发现不了啊。
    • 第三步的授权数据具体是什么由第二步请求qq服务器时带的参数决定

用户表设计

  1. 第一种方式是用户表字段完全采用qq授权数据,即该系统的username就是账号,密码就是qq密码,那意味着:

    1. 用户修改qq昵称后登陆A系统,A系统的该用户昵称同步了。
    2. 用户qq登陆后: 不需再填写用户名,密码,下次也只能通过qq登陆,不存在A系统账号密码的登陆方式。
  2. 第二种,系统的user表正常设计,额外做的是加上关联qq字段,用另一种qq-user表来存第三方登陆数据,这样的好处是:

    1. 表结构更清晰,qq返回的如头像,昵称等数据存在qq-user。
    2. 可以方便加入另一种第三方登陆,如加入微信登陆,只需加wechat-user表,和user表加字段关联微信。

    而这样设计,用户首次qq登陆后,需要绑定user表存在的某用户,用户既可用qq登陆也可用A系统用户账号密码登陆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值