微信扫码登陆流程

时间:2024-02-29 15:37:25

微信开放平台登录功能

PC 网站的微信扫码登陆有两种,一种是微信开放平台提供的,参考文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

这种技术实现是通过 OAuth2.0 授权登录,授权并经过用户同意后获取用户信息,然后在平台进行登陆获取平台登录态。

表现方式为,PC 浏览器根据自己的 AppID 调用微信的 JS SDK,创建一个登陆二维码,其中有登陆成功的回调地址。弹出微信页面,页面显示一个微信二维码。用户微信扫码授权后,弹出页面重定向到回调地址。业务根据回调地址处理登陆逻辑。

优点是微信处理好了大部分逻辑,业务只需要完善成功的回调逻辑。

缺点是用户扫码后还要点击授权,不能实现要求用户关注公众号。我们采用下面的方式实现。

微信公众号组合接口实现登陆

表现方式为,页面请求后端获取一个微信的二维码,然后显示该二维码,并开始轮询后端,等待扫码结果(轮询等待 5 分钟二维码过期)。

用户扫码后(未关注公众号的需要关注公众号)轮询接口返回用户 jwt 并且重定向到登录结果页。

需要了解的官方文档

主要流程

说明:

access_toke 有效期为两个小时,统一由一个定时任务一个小时刷新一次并保留到 Redis,刷新后5分钟内新老access_token都可用,业务一般不用特殊考虑。

scene_str 可以根据一定规则创建,事件推送监听可以根据不同规则生成的 scene_str 来处理不同的业务逻辑(不一定只是登陆逻辑)。

v_code 类似一个随机字符串效验码,前端轮询的时候带上并在后端做效验防止伪造攻击。

微信扫码登录并关注公众号