移动应用扫码登录的原理
手机越来越重要了,也比较私密了,也不容易被盗/丢失。所以现在很多网站的登录都使用扫码的形式登录。安全,方便,不需要输入账号和密码。
比如说:你登录pc的微信,你登录淘宝,b站...这些网站都支持扫码登录,极大地提升了用户体验。
那么,扫码登录是怎么实现的呢?
二维码
二维码大家可以理解为字符串,只是程序里对特定的字符串做了识别和判断,所以可以做出特定的响应。
大家用一个普通的二维码扫描软件扫描出来的就是字符串。
流程图
没有时序图将就着看吧,大概就这么个意思。
所以后台工程师则生成一个code,唯一的code,然后用这个code生成二维码,返回给浏览器显示。把code也给浏览器,因为浏览器就是拿着这个code向服务器检查状态的。
检查可以为1秒检查一次,也可以阻塞掉,异步请求,设置一下超时时间即可。
另外一边则是用户扫描,确认登录,把得到的code和token给后台。
而后台则校验身份,确定用户身份后,修改code对应的状态值。
而浏览器一直在请求,当code对应的登录状态值改变为已确认登录时,把token写到浏览器上,并且返回登录成功的结果给浏览器,或者重定向到首页即可。
大厂的做法
以下是微信网页版的截图:
它就是隔一段时间检查一次登录状态,等待用户扫描确认登录。