微信扫码关注公众号登录实现过程

5,796 阅读3分钟

微信提供了两种方法可以实现扫码登录:
  一种是基于微信公众号平台的扫码登录,即直接扫码登录,然后进行信息授权登录;
  一种基于微信开放平台的扫码登录,即扫码关注公众号进行登录。

两者的区别:
  微信开放平台需要企业认证\color{red}{企业认证}才能进行注册,认证费用位300元,只需要认证一次\color{red}{只需要认证一次}
  微信公众平台需要认证微信服务号,才能进行扫码登录的开发,认证费用为300/\color{red}{300元/年}

具体内容可戳下方链接了解更多

  微信开放平台文档----->导读 | 微信开放文档 (qq.com)

  微信公众号平台文档----->微信公众平台开发概述 | 微信开放文档 (qq.com)

本文介绍的是微信公众平台测试号的一个的扫码登录实现的一个过程\color{red}{本文介绍的是微信公众平台测试号的一个的扫码登录实现的一个过程}

登录大致流程

  1. 用户点击进入快捷微信登录页面

  2. 服务器向微信服务器发送请求(url请求1),获得唯一接口调用凭证access_token;

这个请求是通过公众号的标识appid(每一个公众号都有一个appid,相当于公众号的账号)以及公众号的密钥secret进行获取返回access_token的。
access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

接口调用url1

https请求方式::GET api.weixin.qq.com/cgi-bin/tok…

  1. 通过access_token换取调用二维码的凭借ticket

服务器获取到微信服务器返回的access_token后,服务器再一次通过url请求2向微信服务器发送请求,向其获取换取二维码凭证的ticket
每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的出创建二维码的ticket过程
若想了解目前的这两种类型的二维码,戳这:微信开放文档 (qq.com)

接口调用url2

https请求方式: POST <api.weixin.qq.com/cgi-bin/qrc… create?access_token=TOKEN>

  1. 浏览器通过ticket凭证直接向微信服务器发送请求url3换取二维码,微信服务器则向浏览器返回带参二维码图片的地址

接口地址调用url3

https请求方式:mp.weixin.qq.com/cgi-bin/sho…
ticket正常情况下,http返回码是200,是一张图片 可以直接展示或者下载

  1. 获取二维码图片后,用户进行扫描。当用户扫描的时候,微信服务器可能推送以下两种事件:
    a. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者
    b. 如果用户已经关注公众号,则微信会将带场景扫描事件推送给开发者

  2. 当开发者(即服务器)接收到事件推送的时候,其进行逻辑处理,并向微信服务器发送请求获取用户信息,同时响应浏览器发送的请求;

最后,服务器会收到微信用户的openid和带参二维码的参数等信息,并进行业务的处理。
其中,服务器可以通过openid和access_token获取用户的基本信息,openid在同一个公众号内用来唯一的标识一个微信用户。
接口调用url4

http请求方式:GET api.weixin.qq.com/sns/userinf…

  1. 最后,确定扫描成功,重定向登录页成功页面。

大致流程图

image.png