怎么实现通过扫描二维码进行登录?
首先,任何一个二维码表示的都是一串字符串。
我们打开淘宝登录页面: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。
最后以一张流程图总结扫码登录原理:
怎么实现通过扫描二维码进行登录?相关推荐
- 实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析
关于XMPP组件的文章,先休息两天,好歹已经完整的写了一份. 这两天,先实现一套关于web微信扫描二维码页面登录的试验,因为这种模式在我们的很多业务场景里大有前途. 首先介绍一下web微信登录的过程 ...
- Android扫描二维码 实现 登录网页
工程代码:ScanQRcode.zip ------------------------------------------------------------------ 1. 扫描二维码登录的实现 ...
- 微信扫描二维码快速登录网站
在近期的一个项目中用到了微信扫描注册.登录网站功能所以整理了下希望对读者有帮助. 首先,你需要有一个没有绑定微信.微信公众平台的邮箱注册成为微信开放平台开发者,在管理中心创建移动应用.或者网站应用获得 ...
- 实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
上一篇,介绍了二维码生成的机制,紧接着,我们就要开发手机客户端来识别这个二维码. 二维码,实际上是记录了这个页面的sessionID,目的是为了最后让服务器能通过long polling的机制去通知到 ...
- 我的微信扫描二维码实现登录のJava
微信登录开发参考网址 微信官方文档の公众号 微信公众平台接口测试账号申请 微信公众平台接口在线调试网址 我的微信登录开发流程 配置一些基本数据 /** * 配置好一些需要用到的数据 */ public ...
- 【QT学习】扫描二维码获取登录验证码(完整源码)
- 关于Unity调用摄像头扫描二维码与生成二维码的实现方法
1.常用的生成二维码网址 https://cli.im/ 2.上官网下载二维码插件 http://zxingnet.codeplex.com/ 3.将下载的插件中zxing.unity.dll文件放入 ...
- 转【微信小程序 四】二维码生成/扫描二维码
原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端 二维码生成 二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示 ...
- 解决android扫描二维码时,用户禁止权限报错问题
当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { m ...
最新文章
- 我的家庭私有云计划-16
- 【NLP】Attention Model(注意力模型)学习总结
- FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】
- AcWing 199. 余数之和 (除法分块)打卡
- html下拉列表框设置两个,怎么使用HTML option标签添加两个value
- WCF IE 能够正常访问,chrome 和firefox不能正常访问
- MathType使用中的四个小技巧
- poj 2439 ArcticNetwork 最小生成树Kruskal、(Prim方法还没做
- (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示
- ES6中的扩展运算符
- 有些人总是在进步,因为他随时懂得回溯、调试、纠错,进而提升自己
- 智能一代云平台(三十六):项目中如何做到避免传递依赖
- USB及手机平板设备插拔响应解决方案
- Java实现批量ping IP地址
- web前端工程师工资待遇 各阶段所需要的技术
- 淘宝双11实时数据分析项目报告
- 光猫的ip地址段和路由器ip地址段互换
- 树莓派YOLOV5连接手机摄像头
- Python语言入门这一篇就够了-学习笔记(十二万字)
- POJ 2752 既是前缀又是后缀
热门文章
- go pprof 实战
- 教育大数据总体解决方案(1)
- excel转换pdf java_用Java把Excel转换成PDF的方法
- Java 实现向邮箱发送邮件及点击邮件激活网页打不开等问题,常用作注册账号及激活账号(测试为qq邮箱)
- 2023亚马逊云科技中国峰会之Serverless
- 【华为OD机试真题 Java】火星文计算(100%通过+全网最详细注释)
- Logstash~filter.json过滤器使用教程(附带示例)
- 岁末将至,你还有多少诗想写给2020?
- 全面超越 Appium,使用 Airtest 超快速开发 App 爬虫
- std::string 收缩到合适大小_佛山热收缩帽怎么样,塑料胶帽厂家