微信扫码登录原理解析

article/2025/9/12 22:29:08


(尊重劳动成果,转载请注明出处: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#管理一枚。欢迎大家进来交流技术。







http://chatgpt.dhexx.cn/article/40GHG9Fe.shtml

相关文章

web微信扫码登录

微信web扫码登录的大致流程,最后有源码基本是够用了,后续登录这一块会继续完善,会加上shiro、redis,前端准备用react来做,搞个全套的 开始之前我们先来看几个问题,有兴趣的可以了解下欢迎发表评论提出意见…

使用码上登录实现微信扫一扫登录

微信扫一扫登录测试 码上登录开发和使用登录的时序图准备工作后台开发前端显示 码上登录 码上登录是一个小程序,对个体开发者提供了免费的微信扫一扫登录入口,因为微信开发者需要企业认证,没办法在个人网站上做测试。码上登录相当于一个桥接…

微信扫码登录的一种开发思路

微信扫码授权登录流程: 用户在显示二维码的页面用手机扫码授权页面跳转到指定地址,URL上带有参数code前端通过code向服务端请求用于权限认证的token前端后续请求在请求头带上token作为身份标识 需要解决的问题 按照上述的流程,前端最简单的…

java集成微信扫码登录

具体流程可以看微信官网的扫码登录文档 地址:https://open.weixin.qq.com/cgi-bin/showdocument?actiondir_list&tresource/res_list&verify1&idopen1419316505&token&langzh_CN 一、 前期准备 1、注册 微信开放平台:https://open…

企业微信扫码登录

企业微信扫码登录步骤: 1.首先在要放置二维码的页面提供一个盒子用于防止生成的二维码 2.在当前页面将企业微信提供的js进行引入 3.调用提供的方法实例, 4.要获得扫码成功之后的code和state值,调用服务,就能查到当前用户的token&…

扫描微信二维码实现快速登录

一、什么是二维码 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。二维条码/二维码…

个人网站如何使用微信扫一扫登录---SpringBoot项目

文章目录 前言一、码上登录是什么?二、使用步骤1.登录前准备,获取SecretKey2.前端发起登录请求3.后端调用“码上登录”服务器3.1. 配置文件3.2. 发起请求3.3.返回的参数 4.前端显示二维码5、扫一扫登录6 、登录成功后接收用户信息7、通知前端登录成功并返…

微信扫码登录是如何实现的?

网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢? 打开网页版微…

Python 最强 IDE 详细使用指南!

本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 选自RealPython,作者:Jahongir Rahmonov 机器之心编译,参与:魔王 PyCharm 是一种 Python IDE,可以帮…

用 Python 给全球女神颜值排个序

点击上方“码农突围”,马上关注,每天上午8:50准时推送 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看” 作者 | 数据森麟 来源 | 数据森麟(ID: shujusenlin&#…

官宣:Python 3.8正式发布!来看看有哪些新功能

点击上方“码农突围”,马上关注,每天上午8:50准时推送 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看” 来源:.python.org 编辑:肖琴,转自…

人工智能可以产生自主意识吗?

作者:人民邮电出版社 链接:https://www.zhihu.com/question/372639666/answer/1343242547 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 「既然人类对自己存在的认知来源于“感知”和“记忆…

CET6 历年真题原词复现 核心词汇 做题技巧 听力拿分技巧汇总(这篇文章是英语四六级考试最后的版本,谢谢大家一路陪伴)

话不多说直接进入 这次是最后一次 也是最用心的一次关于CET6的整理,CET4很简单,我认为没有必要去整理或者帮助各位同学,cet4只是cet6的前置任务罢了,但要是你说你考完cet4就收手了,不考了,不考6级了。我只…

这一款神器,助你秒级定位线上问题!

点击上方“Github中文社区”,关注 触达Github项目来源:https://my.oschina.net/leejun2005/blog/1524687 背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。 尤其是在周末或大半夜,突然群里有人反馈线上机器…

前端工程师高手说说CSS学习中的瓶颈

一、何为瓶颈? “瓶颈”指瓶子的颈部,相对狭窄。这是很传神的一个词,因为狭窄,因此难以突破;但是,一旦突破了,就是广阔天空(偌大瓶身)! 小弟不才&#xff0…

线上服务 CPU 100%?一键定位 so easy!

转自:大数据之路, 链接:my.oschina.net/leejun2005/blog/1524687 背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。 尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟…

线上服务 CPU 100% ?一键定位 so easy!

来源:my.oschina.net/leejun2005/blog/1524687 背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。 尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一…

牛逼的故障诊断工具!秒级定位线上问题

背景 经常做后端服务维护或开发的同学,或多或少都遇到过CPU 负载特别高的问题。尤其是在周末或大半夜(有没有同感,平时不出问题,一到休息或下班时间频繁出故障,有的文末点个在看示意一下),突然群…

推荐一款神器,助你秒级定位线上问题!

来源:my.oschina.net/leejun2005/blog/1524687 背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。 尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一…

最牛逼的故障诊断工具!秒级定位线上问题

点击下方公众号「关注」和「星标」 回复“1024”获取独家整理的学习资料! 背景 经常做后端服务维护或开发的同学,或多或少都遇到过CPU 负载特别高的问题。尤其是在周末或大半夜(有没有同感,平时不出问题,一到休息或下班…