二维码

  首先,二维码在编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。简单来说 ,每一个二维码图像都含有一些特定的信息,人们利用数字图像处理技术使计算机能够对图像进行运算和处理,二维码(如右图)图像上的像素矩阵在计算机中处理时,有黑点的标记为“1”,空白的标记为“0”,当二维码被输入设备(扫描仪,摄像头)读取到计算机时成为一串类似“10101000011101111”的二值代码。这串代码是一个网址链接。

我们在使用微信扫码时发生了什么

  假设这样一个情形:

  1. 打开一个网页,点击“登录”或“注册”按钮,弹出一个二维码,提示打开手机微信客户端扫码登录或注册;
  2. 坐在屏幕前的你轻松地拿出手机打开微信扫码,手机微信显示出了网址信息并提示确认登录,点击确认登录
  3. 网页显示登录或注册成功,进行下一步骤······

  我们轻松登录的背后,计算机和服务器做了许多工作:

  1. 网站后台向微信服务器发送请求返回一个二维码,或者网站自己实例化一个自己的二维码;显示在页面上,供用户扫码
  2. 微信用户允许授权第三方应用后,手机微信会返回给网站一个code(临时授权票据)参数;
  3. 关键:网站通过code参数加上AppID和AppSecret得到access_token(令牌),网站后端利用令牌在微信服务器获取用户信息,执行登录或注册操作

网页实现微信扫码登录

  扫描的二维码不是网站随意生成的,它必须是能够被微信程序识别的,如果用微信扫描它不接受的二维码,微信会返回给用户一些信息,如上图二维码在用微信扫描后会返回一个支付宝链接,用户只能通过支付宝app或浏览器才能看到解析出的信息。第三方应用要想成功获取扫码用户的信息完成登录或注册(也就是获得用户的个人信息)只能向微信服务器发起请求。为此我们需先向微信系统“验明正身”——申请认证公众号,获取权限。

  还好在微信开发者文档中规范了我们获取用户信息的方法和途径。在申请到认证公众号之前,我们可以先通过测试号申请系统,快速申请一个接口测试号,开始接口测试开发。在开发过程中,我们可以使用接口调试工具来在线调试某些接口。

参考资料:https://baike.baidu.com/item/%E4%BA%8C%E7%BB%B4%E7%A0%81/2385673?fr=aladdin

     https://www.cnblogs.com/jiangjunli/p/7436110.html 
    https://blog.csdn.net/andyliulin/article/details/53612108
    https://www.cnblogs.com/0201zcr/p/5133062.html

    

PC端实现微信登录浅析的更多相关文章

  1. 微信开放平台PC端扫码登录功能个人总结

    最近公司给我安排一个微信登录的功能,需求是这样的: 1.登录授权 点击二维码图标后,登录界面切换为如下样式(二维码),微信扫描二维码并授权,即可成功登录:    若当前账号未绑定微信账号,扫描后提示“ ...

  2. 利用WxJava实现PC网站集成微信登录功能

    原文地址:https://mp.weixin.qq.com/s/rT0xL9uAdHdZck_F8nyncg 来源:微信公众号:java碎碎念 1. 微信开放平台操作步骤 微信开放平台地址:https ...

  3. PC端网站微信扫码登录

    需求分析:用户通过扫描我们网页的二维码,如果已经绑定我们平台的账户,即成功进入首页,否则提示先绑定个人微信账号. 1.绑定微信账号:是通过关注微信公众号实现绑定个人微信账号.首先通过后台接口获取到ti ...

  4. pc端用微信扫一扫实现微信第三方登陆

    官方文档链接 第一步:获取AppID  AppSecret (微信开发平台申请PC端微信登陆)   第二步:生成扫描二维码,获取code https://open.weixin.qq.com/conn ...

  5. Java SpringMVC实现PC端网页微信扫码支付完整版

    一:前期微信支付扫盲知识 前提条件是已经有申请了微信支付功能的公众号,然后我们需要得到公众号APPID和微信商户号,这个分别在微信公众号和微信支付商家平台上面可以发现.其实在你申请成功支付功能之后,微 ...

  6. PC网站应用接入微信登录

    参考文档: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&ve ...

  7. 移动端,PC端,微信等常用平台和浏览器判断

    var wzw={ //浏览器相关信息 //android webview 需要app进行支持,Android web view初始化时,在navigator中添加标识 browser:{ versi ...

  8. react网页版聊天|仿微信、微博web版|react+pc端仿微信实例

    一.项目介绍 基于react+react-dom+react-router-dom+redux+react-redux+webpack2.0+nodejs等技术混合开发的仿微信web端聊天室react ...

  9. c#版在pc端发起微信扫码支付

    等了好久,微信官方终于发布了.net的demo. 主要代码: /** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式 ...

随机推荐

  1. JSP中EL很常用,怎样使用大于号、小于号、等于号等

    JSP中EL很常用,怎样使用大于号.小于号.等于号等   符号 在EL中使用 常规 1 等于 eq == 2 不等于 ne != 3 大于 gt > 4 小于 lt < 5 大于等于 ge ...

  2. C++11 std::move和std::forward

    下文先从C++11引入的几个规则,如引用折叠.右值引用的特殊类型推断规则.static_cast的扩展功能说起,然后通过例子解析std::move和std::forward的推导解析过程,说明std: ...

  3. RTC及sensor时间同步

    https://blog.csdn.net/dai_jing/article/details/38147419 ----------------------------- linux 的系统时间有时跟 ...

  4. golang-Beego-orm创建的坑

    Orm使用sqlites不识别问题 Idc string `description:"机房"` 这个description sqlites的数据库不识别.解决方法 去掉descri ...

  5. 半导体知识讲解:IC基础知识及制造工艺流程

    本文转载自微信公众号 - 中国半导体论坛  , 链接 https://mp.weixin.qq.com/s/VhCsVGyEDrgc2XJ0jxLvaA

  6. JavaScript传递参数方法

    1.SetTimer传递参数 setTimeout(function (obj) { obj.myScroll = new IScroll('#wrapper', { click: true }); ...

  7. Arduino-常用指令

    pinMode(LEDPin,OUTPUT);        //设置引脚模式 参数1      引脚 参数2      OUTPUT  输出:INPUT   输入 用在setup()函数里 digi ...

  8. 理解Java的NIO

    同步与阻塞 同步和异步是针对应用程序和内核的交互而言的. 同步:执行一个操作之后,进程触发IO操作并等待(阻塞)或者轮询的去查看IO的操作(非阻塞)是否完成,等待结果,然后才继续执行后续的操作. 异步 ...

  9. Luogu P4204 神奇口袋 题解报告

    题目传送门 [题目大意] 一个口袋里装了t种颜色的球,第i种颜色的球的数目为a[i],每次随机抽一个小球,然后再放d个这种颜色的小球进口袋. 给出n个要求,第x个抽出的球颜色为y,求满足条件的概率. ...

  10. 本地Git与Github建立关联

    准备 本地与Github建立连接,需要用到SSH公钥.一般安装完Git,会在用户目录中生成一个 .ssh的文件夹 如果没有此文件夹,可以通过命令创建 $ ssh-keygen -t rsa -C &q ...