微信二维码登录原理是什么_请使用微信扫描二维码登录

微信二维码登录原理是什么_请使用微信扫描二维码登录网页登陆是微信4.2以后版本提供的一种全新的登陆方式。用户只需要用手机扫一扫微信网页中的二维码,就能马上实现微信网页登陆。这种登陆方式虽然炫酷,但是多少有些违背直觉:网页端是怎么知道是哪个微信账号

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

网页登陆微信4.2以后版本提供的一种全新的登陆方式。用户只需要用手机扫一扫微信网页中的二维码,就能马上实现微信网页登陆。

这种登陆方式虽然炫酷,但是多少有些违背直觉:

  • 网页端是怎么知道是哪个微信账号扫它的呢?
  • 前后两个事件是如何联系起来的呢?
  • 这种登陆方式安全么?
  • 为什么微信选择这种验证方式呢?
  • 这种登陆方式还可以延伸到其他应用场景么?

出于对这些问题的好奇,我和隔壁老王做了一番探索~

实现机制

今天隔壁老王在刚买的笔记本上体验了一把网页微信。他是这么做的:

  1. 在网页打开,这时网页显示的是一个二维码。
  2. 用手机打开微信,使用扫一扫功能扫描屏幕上的二维码。
  3. 扫描成功后,手机微信询问是否确认登陆网页版微信,点击确认后网页微信登陆成功。

让我们慢镜头重放这个过程:
当老王访问 ,他在网页中得到一个二维码。

在这个过程中,老王的浏览器和微信服务器之间建立了一个阻塞的长链接,同时服务器还专门为老王新开了一个有独立UID为SWJNSjNJblBJQT09的Session,并把这个UID嵌入到二维码中返回。

注意,这个UID只是一个随机不重复数,并不是Session ID。

老王看到二维码后,使用手机微信中的扫一扫功能读取了二维码中的UID。手机微信把具有老王身份信息的token A和这个SWJNSjNJblBJQT09的UID打包并做一些特殊的处理后,发给微信服务器进行确认。

隔壁老王: 我们可以使用其他二维码扫描软件来登陆吗?
Cosmo: 二维码的转码规则是统一的。任何二维码扫描软件都可扫除里面包含的信息。比如上图扫出的结果是。但是只有微信app能够把包含用户身份信息的token和这个扫描结果做处理,然后与微信服务器通信,告知它是老王扫了这个二维码。所以,重要的不是扫描二维码中的信息,而是谁扫描了这个信息。

当微信服务器通过确认时,它已经同时获得了用户老王和UID为SWJNSjNJblBJQT09的网页端的信息,并知道老王将要通过UID为 SWJNSjNJblBJQT09的Session来访问微信服务。因为老王是一个真实的用户,所以微信服务器就给UID为SWJNSjNJblBJQT09的Session分配一个token B,让老王能够在一定限定条件下访问微信服务。由于网页在加载时候已经把大部分相关资源都预先加载进来了,这个长链接得到确认信息后,网页端只需要加载用户列表,所以响应速度很快,也不需要手动刷新。

隔壁老王: 限定条件是什么呢?
Cosmo: 具体条件要问腾讯才知道,但是这些限定不外乎限定访问时间、限定同时登陆设备数、电脑休眠后Toekn自动收回等等。

现在,老王理论上算是登陆成功了。但是为了不显得突兀,微信服务器贴心地给老王手机发个确认登陆网页版微信的信息,让老王做最后一个确认操作。

隔壁老王: 这种登陆方式安全嘛?
Cosmo: 由于整个验证过程在手机和服务器这个闭环中运行的,有效杜绝了电脑端泛滥的木马和病毒,并且二维码的生成和访问都通过SSL安全通道完成,这种登陆方式在现阶段来说应该是安全的。当然,要保管好手机。

至此为止,老王成功登陆了网页微信啦!

背后原因

酷炫爽说
张小龙多次提到“营销的目的是让用户觉得‘爽’。口碑传播的基础是‘好玩’。爽是体验,体验比功能更易传播。” “趣味性大于功能,用户要的是‘爽’。” 所以,这种登陆方式的提出是微信的一种基于“爽”字的营销手段。

入口争夺说
张小龙曾强调“PC的入口在搜索框,手机上的入口在二维码”。所以二维码扫描登陆时微信抢占手机入口的重要一环,日后微信将通过这个入口变革我们的登陆方式,最终变成我们的移动身份证。现成的一个例子就是通过扫描智能电视上的二维码登陆账号。

借鉴说
有一派说法是,微信这个二维码登陆借鉴自日本的Line。有趣的是,目前Line已经关闭这项服务。所以这就是日本人精于战术疏于战略的例子?

移动核心说
这样的设计突出了移动O2O核心,突出了微信是为移动而生的理念。

阴谋论说
微信对腾讯某部门冲击太大,受到限制?(瞎猜的)

总结

引用知乎黄良懿的回复作为微信二维码登陆的总结:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167855.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是通配符掩码

    什么是通配符掩码通配符掩码(WildcardMask)—通配符掩码(WildcardMask)是一个32位的数量,用在与一个IP地址的联合上来决定在一个IP地址的那个位应该不忽略,在将那个地址与另一个IP地址相比时。一个通配符掩码在设置接入列表时被指定。路由器使用的通配符掩码(或者称作反掩码)与源或目标地址一起来分辨匹配的地址范围,它跟子网掩码刚好相反。它像子网掩码告…

    2022年7月24日
    7
  • 3d游戏建模全解[通俗易懂]

    3d游戏建模全解[通俗易懂]目前市面上随着3D游戏的兴起和VR的盛行,越来越多人对网络游戏越来越热衷,3D游戏建模设计师的需求也越来越广泛,市场缺口大,人才需求供不应求。但在大多数人的印象中,这个行业似乎很难入门,没有美术基础,好像丝毫没有机会进入这个行业。真的是这样吗?3D建模3D建模通俗来讲就是通过三维制作软件构建出具有三维数据的模型。在3DMAX中,建模各项最首要的就是感觉。需要感觉每个部件的大小。感觉各个部位所需要使用的材质、颜色等。需要把控整体的颜色效果。而这些可以说都和美术的基础挂钩的,尤其是颜色。颜色

    2022年5月11日
    42
  • cde网站_zaqxswcde

    cde网站_zaqxswcde给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。示例 1:输入:matrix = [[9,9,4],[6,6,8],[2,1,1]]输出:4 解释:最长递增路径为 [1, 2, 6, 9]。示例 2:输入:matrix = [[3,4,5],[3,2,6],[2,2,1]]输出:4 解释:最长递增路径是 [3, 4, 5, 6]。注意

    2022年8月9日
    0
  • html5 scrollheight,scrollHeight和scrollWidth,获取网页内容高度和宽度不正确

    html5 scrollheight,scrollHeight和scrollWidth,获取网页内容高度和宽度不正确问题如下图所示,高度明显不正确,请问问题出在哪,希望能给出详细解释。另外,希望能再具体解释下document.documentElement.clientHeight、window.innerHeight、document.documentElement.scrollHeight及document.body.clientHeight之间的关系,发现document.body.clientHeigh…

    2022年7月23日
    12
  • pythonrandom函数用法_python之random模块函数的使用

    pythonrandom函数用法_python之random模块函数的使用1)random.random()#用于生成一个0到1的随机浮点数,(0,1】2)random.randint(a,b)#用于生成一个指定范围内的整数,【a,b】3)random.randrange([start],stop[,step])#从指定范围内,按指定基数递增的集合中获取一个随机数。注意参数是整数,且不包括stop。random.randrange(10,30,2),结果相当…

    2022年5月13日
    63
  • 网络摄像头RTSP视频流WEB端实时播放实现方案[通俗易懂]

    网络摄像头RTSP视频流WEB端实时播放实现方案[通俗易懂]IPC视频流怎么实时在WEB浏览器播放,视频流格式是RTSP。下面我整理了自己实现的方案以及网上看到的一些方案一、FFmpeg+nginx将转hls通过video.js在支持h5浏览器播放(我实现的)参见:Nginx+FFmpeg实现rtsp流转hls流,在WEB通过H5video实现视频播放不足:hls延迟较rtmp、http-flv大二、FFmpeg+nginx-…

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号