首先,任何一个二维码表示的都是一串字符串。

我们打开淘宝登录页面:https://login.taobao.com/member/login.jhtml,展示了二维码:

通过草料二维码解析出这张二维码表示的是如下字符串:

https://login.m.taobao.com/qrcodeCheck.htm?lgToken=e20115f0e33f373f6be958ca54a60b56&tbScanOpenType=Notification,

这关键的就是lgToken,这是网页的一个唯一ID。

当打开了二维码登录后,我们通过chrome控制台看网路请求,会发现:

网页在轮询调用接口:https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do?lgToken=9ed6cfefe97b10b808fbfff0705379b1&defaulturl=&_ksTS=1530178881213_61&callback=jsonp62,

即拿上面二维码里的lgToken去请求服务。

如果没有扫码,返回的是:

如果扫了码,但是手机上没点击“确认登录”的话,界面显示的是:

轮询接口返回的是:

如果长时间未扫码,网页端会停止轮询,并显示:

当手机端确认登录后,接口返回的是:

这里返回了一个token,应该就是登录态。

这其中手机端与服务端做了什么交互我们不得而知,但是可以猜测到,客户端在登录态有效的情况下,拿网页端的lgToken去请求了服端,并且服务端记住了这个lgToken,并认为登录了。当网页端再次轮询请求接口时,就返回真正的登录态Token。

最后以一张流程图总结扫码登录原理:

怎么实现通过扫描二维码进行登录?相关推荐

  1. 实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析

    关于XMPP组件的文章,先休息两天,好歹已经完整的写了一份. 这两天,先实现一套关于web微信扫描二维码页面登录的试验,因为这种模式在我们的很多业务场景里大有前途. 首先介绍一下web微信登录的过程 ...

  2. Android扫描二维码 实现 登录网页

    工程代码:ScanQRcode.zip ------------------------------------------------------------------ 1. 扫描二维码登录的实现 ...

  3. 微信扫描二维码快速登录网站

    在近期的一个项目中用到了微信扫描注册.登录网站功能所以整理了下希望对读者有帮助. 首先,你需要有一个没有绑定微信.微信公众平台的邮箱注册成为微信开放平台开发者,在管理中心创建移动应用.或者网站应用获得 ...

  4. 实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端

    上一篇,介绍了二维码生成的机制,紧接着,我们就要开发手机客户端来识别这个二维码. 二维码,实际上是记录了这个页面的sessionID,目的是为了最后让服务器能通过long polling的机制去通知到 ...

  5. 我的微信扫描二维码实现登录のJava

    微信登录开发参考网址 微信官方文档の公众号 微信公众平台接口测试账号申请 微信公众平台接口在线调试网址 我的微信登录开发流程 配置一些基本数据 /** * 配置好一些需要用到的数据 */ public ...

  6. 【QT学习】扫描二维码获取登录验证码(完整源码)

  7. 关于Unity调用摄像头扫描二维码与生成二维码的实现方法

    1.常用的生成二维码网址 https://cli.im/ 2.上官网下载二维码插件 http://zxingnet.codeplex.com/ 3.将下载的插件中zxing.unity.dll文件放入 ...

  8. 转【微信小程序 四】二维码生成/扫描二维码

    原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端  二维码生成  二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示 ...

  9. 解决android扫描二维码时,用户禁止权限报错问题

    当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { m ...

最新文章

  1. 我的家庭私有云计划-16
  2. 【NLP】Attention Model(注意力模型)学习总结
  3. FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】
  4. AcWing 199. 余数之和 (除法分块)打卡
  5. html下拉列表框设置两个,怎么使用HTML option标签添加两个value
  6. WCF IE 能够正常访问,chrome 和firefox不能正常访问
  7. MathType使用中的四个小技巧
  8. poj 2439 ArcticNetwork 最小生成树Kruskal、(Prim方法还没做
  9. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示
  10. ES6中的扩展运算符
  11. 有些人总是在进步,因为他随时懂得回溯、调试、纠错,进而提升自己
  12. 智能一代云平台(三十六):项目中如何做到避免传递依赖
  13. USB及手机平板设备插拔响应解决方案
  14. Java实现批量ping IP地址
  15. web前端工程师工资待遇 各阶段所需要的技术
  16. 淘宝双11实时数据分析项目报告
  17. 光猫的ip地址段和路由器ip地址段互换
  18. 树莓派YOLOV5连接手机摄像头
  19. Python语言入门这一篇就够了-学习笔记(十二万字)
  20. POJ 2752 既是前缀又是后缀

热门文章

  1. go pprof 实战
  2. 教育大数据总体解决方案(1)
  3. excel转换pdf java_用Java把Excel转换成PDF的方法
  4. Java 实现向邮箱发送邮件及点击邮件激活网页打不开等问题,常用作注册账号及激活账号(测试为qq邮箱)
  5. 2023亚马逊云科技中国峰会之Serverless
  6. 【华为OD机试真题 Java】火星文计算(100%通过+全网最详细注释)
  7. Logstash~filter.json过滤器使用教程(附带示例)
  8. 岁末将至,你还有多少诗想写给2020?
  9. 全面超越 Appium,使用 Airtest 超快速开发 App 爬虫
  10. std::string 收缩到合适大小_佛山热收缩帽怎么样,塑料胶帽厂家