扫码登录操作过程

  • 浏览器输入:https://wx.qq.com/?lang=zh_CN
  • 手机登录微信,利用“扫一扫”功能扫描网页上的二维码
  • 手机扫描成功后,提示“登录网页版微信”;网页上显示“成功扫描 请在手机点击确认以登录”
  • 手机端点击“登录网页版微信”,网页跳转到用户的微信操作界面

整个扫码登录的操作过程还是挺简单的,而且交互地实时性比较好,如果网络不是非常阻塞,整个过程还是非常快的。

扫码登录原理

扫码登录大概的思路是:微信手机客户端从网页二维码里面得到一些信息,然后发送给网页微信的服务器,网页服务器验证信息并响应。下面,我们借助火狐浏览器提供的Firebug工具看看,到底是怎么一回事儿吧!

1.每次打开微信网页版的时候,都会生成一个含有唯一uid的二维码,而且每次刷新后都会改变。这样可以保证一个uid只可以绑定一个账号和密码,确定登录用户的唯一性。可以通过手机上的UC浏览器提供的扫码功能查看二维码里面的信息,但并不会自动打开该地址。我刷新三次,扫描结果如下,其中最后面那串数字就是uid

1) https://login.weixin.qq.com/l/48e24d66bdbc4f
2) https://login.weixin.qq.com/l/0787fb4fa7ad4c
3) https://login.weixin.qq.com/l/92781a4a7f1c47

通过查看网页源码,这个页面在加载完毕时,已经把很多登录后才需要的相关资源都预先加载进来了,所以登录用户得到确认后展示用户信息的速度很快。

2.除了返回唯一的uid,实际上打开这个页面的时候,浏览器跟服务器还创建了一个长连接,请求uid的扫描记录。如果没有,在特定时长后(目前是27秒左右)会接到状态码408(请求超时),表示应该继续下一次请求;如果接到状态码201(服务器创建新资源成功),表示客户端扫描了该二维码。

请求超时:返回408

扫码成功:返回201

长轮询代码结构:

      function _poll(_asUUID) {// ....$.ajax({type: "GET",url: "https://login." + _sBaseHost + "/cgi-bin/mmwebwx-bin/login?uuid=" + _asUUID + "&tip=" + show_tip,dataType: "script",cache: false,timeout: _nAjaxTimeout,success: function(data, textStatus, jqXHR) {switch (_aoWin.code) {case 200:// ....break;case 201:// ....break;case 408:// ....break;case 400:case 500:// ....break;}},error: function(jqXHR, textStatus, errorThrown) {// ....}});}

3.当用户使用登录后的微信扫描二维码的时候,会将uid和手机微信产生的token进行绑定,并上传到服务器。这个时候,浏览器通过长轮询查询到uid扫描记录,立即得到201响应码,然后通知服务器,客户端由此也进入一个新的页面(就是那个要你点确认的按钮)。在客户端点击确认后,获得服务器授信的令牌,进行随后的信息交互过程。

结语

总的来说,微信扫码登录核心过程应该是这样的:浏览器获得一个唯一的、临时的uid,通过长连接等待客户端扫描带有此uid的二维码后,从长连接中获得客户端上报给服务器的帐号信息进行展示。并在客户端点击确认后,获得服务器授信的令牌,进行随后的信息交互过程。 在超时、网络断开、其他设备上登录后,此前获得的令牌或丢失、或失效,对授权过程形成有效的安全防护。

参考

  • 微信扫描二维码登录网页是什么原理,前后两个事件是如何联系的?

源自:http://www.chenjunxyf.me/wei-xin-sao-miao-er-wei-ma-deng-lu-wang-ye-yuan-li/

justcode.ikeepstudying.com

微信扫码登录网页实现原理相关推荐

  1. (转)微信扫码登录网页实现原理

    扫码登录操作过程 浏览器输入:https://wx.qq.com/?lang=zh_CN 手机登录微信,利用"扫一扫"功能扫描网页上的二维码 手机扫描成功后,提示"登录网 ...

  2. 微信扫码登录网页实现思路

    思路是:浏览器获取唯一的.临时的uid ,通过长链接等待客户端扫描带有次uid 的二维码后,从长链接中获取客户端上报给服务器的账号信息进行展示.并在客户端点击确认后,获得服务器授信的令牌,进行随后的信 ...

  3. SpringSecurity OAuth2实现单点登录,微信扫码登录,Redis缓存验证码---入门到实战

    1. 认证授权 1.1 什么是认证授权 ​ 例如课程发布后用户通过在线学习页面点播视频进行学习.如何去记录学生的学习过程呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什 ...

  4. IM要做手机扫码登录?先看看微信的扫码登录功能技术原理

    本文原文由作者Amazing10原创发布于公众号业余码农,收录时有改动,感谢原作者的技术分享. 1.引言 某天中午,吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧. 干点什么好呢 ...

  5. 微信扫码登录的几秒钟里,到底发生了什么(扫码登录原理)

    事情经过 这天中午,小A吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧. 干点什么好呢?小A单手操作鼠标打开了一个陌生而隐秘的网站.正开着某个视频起劲,突然浏览器弹出了一个对话框 ...

  6. 微信扫码登录实现原理

    二维码这把利刃,产品应该用到极致 微信扫码登录实现原理 转载于:https://www.cnblogs.com/gym333/p/7699885.html

  7. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  8. 微信|QQ扫码登录网页版二维码失效问题解决方案 网站无法访问PC网页版如何解决 安卓软件历史版本下载 FV fooview悬浮球帮助教程

    前言 1. 手机端浏览器登录网页的同时再用微信或者QQ扫码登录出现二维码失效问题如何解决? 2.部分网站无法访问PC网页版如何解决?请看方案 目录 前言 1.方案 2.方案 使用Edge安卓浏览器访问 ...

  9. vue实现网页端企业微信扫码登录功能(前端部分)

     时至今日,企业微信在企业日常工作中的使用越来越频繁也越来越重要,不少企业已使用企业微信进行着日常的工作安排管理.在这种背景下,各类系统和企业微信对接的需求也不断增加,今天要说的就是一个比较常见的需求 ...

最新文章

  1. Android App的启动过程
  2. html无规律卡片布局,如何实现同等间隙的卡片布局
  3. FPGA 中的latch 锁存器
  4. 109. Convert Sorted List to Binary Search Tree
  5. Cloudera Manager 和CDH6.0.1安装,卸载,各步骤截图(此博文为笔者辛苦劳作最终生成的,使用了3个熬到凌晨2~4点的夜晚,外加一个周末完成,请转载时记录转载之处,谢谢)
  6. oracle 10g dsg,【ORACLE】relink oracle 10g 数据库
  7. ie手机浏览器_Flash之后是不是该IE浏览器了
  8. 伪数据科学家 VS 真数据科学家
  9. [常用]MySQL管理工具和应用程序
  10. Android基础学习一(整理,从零开始)
  11. 《水经注地图发布服务中间件》for Linux 版发布
  12. QConf分布式配置管理工具 QConf
  13. 解决百度地图生成器添加标注后图标不显示的问题
  14. 软件设计师真题知识点笔记❀
  15. world分节及分节首页分节页码总页码设置方法
  16. 【学习笔记】docker安装yapi并配置及添加用户、自动同步swagger设置
  17. java安装安装jdk,配置环境变量
  18. 浅析STM32H7 FDCAN(一)
  19. 元宇宙浪潮下,数智人拒绝“标品”
  20. Python入门教程四:绘制奥林匹克环的标志

热门文章

  1. Logistic Regression 之 Sigmoid
  2. 41 WM配置-作业-定义打印控制
  3. 23 OBYC配置COC报错-过账码 未定义
  4. python gui button回调函数运行完成后弹出窗口_嵌入式设备GUI开发之GTK+入门(一)...
  5. python纵向数据分析_python数据分析三个重要方法之:numpy和pandas
  6. python自动化部署工具_Python + Allure(报告)+ Jenkins(持续集成)接口自动化测试环境搭建...
  7. jwt认证机制优势和原理_微服务统一登录认证怎么做?JWT?
  8. LaTex插入PDF图片并调整它的宽度
  9. cookie/storage
  10. 树莓派4b怎么使用usb摄像头_【动手实践】树莓派通过EC20模组访问互联网 by xinlong...