微信提供了两种方法可以实现扫码登录:
一种是基于微信公众号平台的扫码登录,即直接扫码登录,然后进行信息授权登录;
一种基于微信开放平台的扫码登录,即扫码关注公众号进行登录。
两者的区别:
微信开放平台需要才能进行注册,认证费用位300元,
微信公众平台需要认证微信服务号,才能进行扫码登录的开发,认证费用为
具体内容可戳下方链接了解更多
微信开放平台文档----->导读 | 微信开放文档 (qq.com)
微信公众号平台文档----->微信公众平台开发概述 | 微信开放文档 (qq.com)
登录大致流程
-
用户点击进入快捷微信登录页面
-
服务器向微信服务器发送请求(url请求1),获得唯一接口调用凭证access_token;
这个请求是通过公众号的标识appid(每一个公众号都有一个appid,相当于公众号的账号)以及公众号的密钥secret进行获取返回access_token的。
access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。接口调用url1
https请求方式::GET api.weixin.qq.com/cgi-bin/tok…
- 通过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>
- 浏览器通过ticket凭证直接向微信服务器发送请求url3换取二维码,微信服务器则向浏览器返回带参二维码图片的地址
接口地址调用url3
https请求方式:mp.weixin.qq.com/cgi-bin/sho…
ticket正常情况下,http返回码是200,是一张图片 可以直接展示或者下载
-
获取二维码图片后,用户进行扫描。当用户扫描的时候,微信服务器可能推送以下两种事件:
a. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者
b. 如果用户已经关注公众号,则微信会将带场景扫描事件推送给开发者 -
当开发者(即服务器)接收到事件推送的时候,其进行逻辑处理,并向微信服务器发送请求获取用户信息,同时响应浏览器发送的请求;
最后,服务器会收到微信用户的openid和带参二维码的参数等信息,并进行业务的处理。
其中,服务器可以通过openid和access_token获取用户的基本信息,openid在同一个公众号内用来唯一的标识一个微信用户。
接口调用url4http请求方式:GET api.weixin.qq.com/sns/userinf…
- 最后,确定扫描成功,重定向登录页成功页面。