简述手机扫码登陆原理


0

以前以为微信、qq扫码登陆实现难度很高,一定是基于WebSocket等长连接技术实现的,结果最近看了一下qq的扫码登陆请求发现完全不是那一回事,原理相当简单。

整个扫码登陆可以简化为5步:

  1. 浏览器请求到二维码(二维码包含一个二维码标识,该二维码标志存在Redis中)
  2. 手机扫码,请求服务器该二维码标志是否已过期,返回授权页面
  3. 用户确认授权则将二维码标志和用户标识传入服务器,判断二维码标志和用户标识是否有效,有效则生成授权token,并返回授权结果到手机端
  4. 浏览器循环请求服务器获取授权状态,如果已扫码则返回已扫码状态,如果已授权则返回授权token
  5. 浏览器携带授权token请求限制资源

简化时序图如下:
01.jpg

具体代码不太方便演示,一是服务端代码比较简单,二是你得有一个自己的App