网页版微信和微信公共号扫码登陆原理分析

看到知乎上有关于微信扫码登陆原理的讨论。现将自己的分析结果写出来,供大家参考,不正确的地方望指正。

用户打开网页版微信: https://wx.qq.com/,微信为用户生成了一张包含uuid的二维码,然后前台向后台发送轮询请求,查询此uuid是否已被绑定上登录签名。但如果uuid尚未绑定登录签名,后台不回立即返回结果,而是会阻塞30秒左右,在30秒内仍未扫描成功,后台会返回一个结果码。结果码的值为408,代表微信客户端尚未扫描。

  • 发送轮询请求,判断uuid是否绑定了用户的登陆签名

  • 如果30秒内用户未扫码,uuid未绑定用户的登陆签名,则后台返回结果码 window.code=408

如果用户30秒内,未完成扫码,则前台会不停的发送请求。一旦微信扫码完成,后台会直接返回结果,减少等待时间。扫码成功后,后台会返回结果码window.code=201.

微信客户端扫码二维码后,客户端会向服务器发送uuid以及用户信息,以便绑定uuid和用户信息。

  • 微信客户端请求信息

  • 扫码成功界面

扫码成功后,微信客户端会等待用户确认登陆。用户确认登陆后,微信服务端会为用户生成登陆签名,并将此签名与uuid进行绑定。绑定完成后,微信服务端会将此签名信息返回到前台,之后网页版微信便可通过此签名获取用户信息和微信信息。

  • 确认登陆后的网页响应信息

返回的结果码为:window.code=200,代表用户确认登陆成功。接着跳转到网页版微信的登陆页,并携带登陆签名和uuid。微信登陆服务收到这两个参数后,进行校验完成登录,登陆成功后,跳转到网页版微信主页,用户便可以通过网页使用微信了。

--------------------------------------------------------------------------文毕----------------------------------------------------------------------------

微信自身的扫码登陆功能,也可以通过开放接口,供第三方网站或应用使用。集成微信扫码登陆功能,详见我的上一篇文章二维码登陆。如果不想开发代码,可以到我的个人网站:http://it.maerdym.cn/mm_mishu.查看已完成的微信扫码登陆功能。近期我会开发微信扫码登陆插件,供大家使用。

时间: 2024-11-05 18:46:29

网页版微信和微信公共号扫码登陆原理分析的相关文章

spring boot项目之卖家扫码登陆获取openid(微信身份验证id)

卖家扫码登陆获取openid 注:此功能只能是微信公众帐号能够使用,个人账号无此功能. 一.打开微信开放平台(与支付阶段不同,特别注意!!!),进入网站应用的网站应用微信登陆开发指南. 二.你会发现和之前支付功能一样,基本步骤如下 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数:2. 通过code参数加上AppID和AppSecret等,通过API换取access_token:3. 通过access_token

微信支付教程系列之扫码支付

微信支付教程系列之扫码支付 http://www.cnblogs.com/nangong/p/9fa625bfb92a986125f0ba72704c46ec.html 今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添加好友的时候,可以通过输入对方的微信号,也可以扫一扫对方的二维码.扫码支付,作为,微信支付里面,不可或缺的一个功能,对商品的支付提供了极为方便的体验,用途也非常的多.例如我们在地铁.公交站常见

【原创分享·微信支付】 C# 微信支付教程系列之扫码支付

微信支付教程系列之扫码支付 今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添加好友的时候,可以通过输入对方的微信号,也可以扫一扫对方的二维码.扫码支付,作为,微信支付里面,不可或缺的一个功能,对商品的支付提供了极为方便的体验,用途也非常的多.例如我们在地铁.公交站常见的那些自动售货机(不错,就是那种投硬币,就可以自动出货的那种机器)中都用到.以前,那种机器,只能通过投硬币或者纸币,但是,这里面也有一定的风险

微信扫码登陆(JAVA)

在web端用到weChat扫码登录,在手机扫码登陆成功后,跳转到相应的界面. 1.第一步请求code 调用接口:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect; 参数信息说明: 参数 是否必须 说明 appid 是 应用唯一标识 redire

扫码登陆 之我见

摘要 原理 打开网页 扫码阶段 验证阶段 准备 搭建环境 服务器环境 第三方依赖 后端 数据库 生成二维码 处理确认登陆请求 前端 效果 首页 扫码 拓展 轮询 超时 扫描后失效 总结 摘要 前几天买阿里云服务器的时候,被扫码登陆给吸引到了.然后就一直在琢磨自己的实现方式.也许是巧合吧,昨晚竟然在梦中找到了一个自认为还不错的实现思路.但是已经凌晨了,为了防止忘记,赶紧写了个小纸条放在床边.于是今天上午就着手编码做了个雏形. 作此文,以记之. 原理 感觉还是应该先进行声明一下. 纯属个人拙见,如果

扫码登录原理及实现

由于扫码登录比账号密码登录更方便.快捷.灵活,在实际使用中更受到用户的欢迎. 本文主要介绍了扫码登录的原理及整体流程,包含了二维码的生成/获取.过期失效的处理.登录状态的监听. 扫码登录的原理 整体流程 为方便理解,我简单画了一个 UML 时序图,用以描述扫码登录的大致流程! 总结下核心流程: 请求业务服务器获取用以登录的二维码和 UUID. 通过 websocket 连接 socket 服务器,并定时(时间间隔依据服务器配置时间调整)发送心跳保持连接. 用户通过 APP 扫描二维码,发送请求到

h5 网页版的微博微信QQ登录

一:微博 1,先说微博吧,首先你的去http://open.weibo.com/wiki/先注册账号,通过验证审核.然后的创建网页应用.微博审核不通过的原因就是域名和网站地址,一定要按实际写的.一定要记得在微博这里设置回调页.然后根据微博开发文档一步一步下来. 2.微博的获取code的地址,是不用urlencode编码的,这个跟微信QQ不同.从客服端获取到code之后,我们是传入服务端的.因为微博第获取acces_token必须要求post请求,微博后台做了不能跨域这是第一个原因.第二个原因是a

微信公众号 扫码支付 模式二 demo

扫码支付 本文附有代码,在下方,如果不熟悉场景的可以看看下面的场景介绍 场景介绍 官网介绍地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 用户扫描商户展示在各种场景的二维码进行支付. 步骤1:商户根据微信支付的规则,为不同商品生成不同的二维码(如图6.1),展示在各种场景,用于用户扫描购买. 步骤2:用户使用微信"扫一扫"(如图6.2)扫描二维码后,获取商品支付信息,引导用户完成支付(如图6.3). 图6

微信支付v3开发(5) 扫码并输入金额支付

关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版.V3版的微信支付没有paySignKey参数.v2的相关介绍请参考方倍工作室的其他文章.本文介绍的为微信支付v3. 一. OAuth2.0授权 JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid .所