(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/78823861冷血之心的博客)

最近针对扫码登录机制做了一个调研,以下以微信网页扫码登录为例进行一个总结。

1、微信扫码登录过程:

  1. 用户在浏览器端访问网页:https://wx.qq.com/ 页面中出现一个二维码
  2. 用户拿着已经登录成功的移动终端(手机)扫码该二维码
  3. 浏览器中获取到了移动终端已经登录的账号信息(包括头像),并且进行了显示
  4. 在手机端点击确定登录,浏览器端登录网页版微信成功,可以进行信息交互
步骤一和步骤三中的过程显示如图所示:
             

2、扫码登录过程解析:

在第一小节中,给出了微信扫码登录的过程,以下详细阐述在各个过程中都发生了什么。
步骤一:当打开https://wx.qq.com/ 时,其实是浏览器与微信服务器建立了一个连接。二维码中包含一个可唯一识别的字符串,称为uuid(注意,不是uid ,user id 因为此时的二维码并没有用户的任何信息)。二维码其实是一个链接,当我们使用其它扫码工具进行解析时,可以得到类似以下这样的链接:
https://login.weixin.qq.com/l/AfZJf7-ioA==
https://login.weixin.qq.com/l/QcanFWS4hQ== 
后边的就是唯一识别码uuid,其实这是一个登陆请求链接。
步骤二:当一个可以与微信服务器进行交互的(已经登录)的客户端扫码该二维码时,客户端获得了该二维码中的uuid,并且与自身的账号进行绑定。
步骤三:浏览器端获取了客户端已经登录的账号信息,并且进行显示(头像),继续等待客户端点击确认登录
步骤四:客户端点击确认登录,将uuid+账号信息发送到微信服务器,微信服务器收到之后根据uuid找到该浏览器端的访问请求页面并且给出了访问令牌Token,随后网页版微信登录成功,可以进行信息交互了。

3、注意点:

(1)polling和 long polling的区别:
当浏览器端与服务器建立连接之后,一般有两种方式可以获取到服务器的更新信息,即polling和long polling。
polling即轮询,是指浏览器通过周期性轮询,查看服务器是否有更新的信息;
long polling指的是长轮询,浏览器与服务器建立连接之后,服务器将此连接进行挂起,但有更新信息时,再将信息发送给浏览器端。浏览器端重新建立连接,如此循环反复,这是一种长连接的方式。
借用一个比较形象的例子:

传统的polling一般是由C向S询问:“有我的信件吗?”。S接到询问之后,会立即查询,并且把查询结果告诉C,不管有没有C的信件,要么回复:“嗯,你有X封信。”,要么回复:“没,没有你的信”。

Long Polling更像是这样,C向S发出询问:“有我的信件吗?”,S开始查询,如果有则回复C:“嗯,有你x封信”。如果没有,则不作任何回复,而是让C等着,自己一遍一遍地查询是否有订阅者的信。

换句话说:当S收到C的查询请求之后,Polling则只查询一次,并且把查询结果告诉C;而Long Polling收到请求之后,则会一遍一遍地查询,直到有消息才会响应C,不然一直hold Client。

优缺点分析:

轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 
优点:后端程序编写比较容易。 
缺点:请求中有大半是无用,浪费带宽和服务器资源。 
实例:适于小型应用。

长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 
优点:在无消息的情况下不会频繁的请求,耗费资源小。 
缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。 
实例:WebQQ、Hi网页版、Facebook IM。

(2)扫码登录原理图:

如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~

本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。

微信扫码登录原理解析相关推荐

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

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

  2. 微信扫码登录网页实现原理

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

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

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

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

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

  5. 应用网站微信扫码登录处理逻辑解析

    应用网站微信扫码登录处理逻辑解析 近日刚刚进行了网站应用微信扫码登录的功能开发.开发前看了不少文档,但感觉都很偏技术术语,太过于专业.对于刚刚想涉及这方面的菜鸟来说,看的一脸懵逼. 趁着自己刚刚动手的 ...

  6. AbpVnext 扩展企业微信扫码登录(钉钉登陆、短信登陆、微信登陆等)Vue框架

    目录 1.开始开发准备 1.1 企业微信扫码登陆接入流程 1.2 开启网页授权登陆 1.3 构造独立窗口登陆二维码 1.4 构造内嵌登陆二维码 @@登陆顺序: 1. 发现文档配置 2. 获取token ...

  7. 微信扫码登录的几秒钟里,到底发生了什么

    一想到你要关注我 ↑ 就忍不住有点紧张0.0... 事情经过 这天中午,小A吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧. 干点什么好呢?小A单手操作鼠标打开了一个陌生而隐秘的 ...

  8. 微信扫码登录的几秒钟里,到底发生了什么?

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

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

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

  10. SpringBoot整合微信扫码登录

    SpringBoot整合微信扫码登录 准备工作 基本思路流程 搭建SpringBoot 引入依赖 加入配置文件 代码实现 工具类 controller层 结果 准备工作 1.登录官网了解到,学习者想本 ...

最新文章

  1. 【Python】可视化配色方案自由啦 (Python版)
  2. 127.0.0.1 php,关于php -fpm 出现127.0.0.1:9000已经被占用
  3. linux—命令汇总
  4. linux安装vim plug, vim-plug 的安装和使用
  5. 字符函数、字符串函数、内存函数用法及其模拟实现
  6. ScrollView常用属性汇总
  7. POJ2104 K-TH NUMBER 传说中的主席树
  8. 转载:向 XPath 中添加自定义函数
  9. python高次方程求根公式,Python简单求解高阶方程的数值解
  10. 二倍图三倍图什么意思_什么是二倍图三倍图
  11. android qq很多压缩包,微信QQ总是占用手机大量内存?这次腾讯推出官方版清理工具了...
  12. springboot---fastDFS 简单文件上传/下载/删除
  13. 【水汐のpython】 用python抓取外网的本子站并获取本子封面和信息
  14. 关于mac苹果电脑装win10系统发热严重的解决方法
  15. 什么是BGP,一般机房的BGP是什么意思?
  16. 转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名...
  17. Vue搭建可视化界面
  18. Windows远程桌面(RDP)密码凭证获取 (゚益゚メ) 渗透测试
  19. TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作
  20. c语言read怎么一行一行读,使用read从标准输入中读取一行

热门文章

  1. (转载)基于Overfeat的图片分类、定位、检测
  2. 23-Mixly红外遥控编程 | Mixly技巧系列
  3. 人工神经网络算法的应用,人工神经网络发展历史
  4. 基于51单片机流水灯仿真与程序设计
  5. 卫星电视的双本振,单本振及高频头相关知识普及
  6. 阿里电话面试经过与总结
  7. 汇总|医学图像分析领域论文
  8. 图解 FAT 文件系统之基础知识(一)
  9. Linux内核源代码阅读
  10. Spark Sql编程