本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
简介
电脑端微信网页扫码授权登录有2种方式:
- 第一种:基于微信公众号,单独获取登录二维码扫码,然后扫码登录,程序控制跳转逻辑,例如CSDN:
- 第二种:基于微信开放平台,跳转到微信二维码页面进行扫码登录,重定向到成功页面,例如有道笔记:
注: 本文记录第一种方式,只需通过微信测试公众号即可完成完整测试,即所有人本地都可以完整运行;第二种需有通过认证资质的开发者账号,后续再记录。
本地完整运行环境准备
内网渗透=>生成本地指定端口映射的外网域名
传送门:内网渗透工具Natapp使用详解
域名生成之后修改配置文件:
注册并配置微信测试公众号
- 注册地址:微信公众平台 测试账号申请,扫码登录,并关注该测试号
- 获取测试号appid和appsecret
3.接口配置信息修改(此处会回调后台签名验证方法,配置时需启动后台)
4.配置网页授权域名,用于获取微信用户信息
流程
文字简述
- 页面点击获取微信登录二维码按钮
- 后台以appid和appsecret为参数调用微信api获取access_token
- 以access_token为参数调用微信api获取本地微信登录二维码ticket,同时传随机字符串参数scene_str,该参与可用于程序验证是否扫码成功
- 通过ticket获取二维码成功,页面显示,同时前台开始进行js定时任务(此处可优化成后台通知),监听是否扫码成功
- 用户微信扫码成功
- 微信服务器端回调本地服务器签名验证接口验证签名和回调处理
- 回调处理确定扫码成功(此处还可进行关注验证),数据库或缓存插入本地扫码成功记录
- 前台定时任务获取到扫码成功记录或者后台主动通知,进行扫码成功后业务处理
代码
1.获取微信二维码和启动js定时任务
前台html
1 | html复制代码<h1>微信扫码登录方式一</h1> |
前台js
1 | js复制代码//======================================微信扫码登录方式一========================================================= |
后台获取二维码ticket接口
1 | java复制代码 /** |
2.签名验证和回调处理
1 | java复制代码/** |
3.扫码成功获取用户信息取消定时任务
js定时任务监听
1 | js复制代码 // 扫码成功,获取用户openId=>为获取用户信息做准备 |
后台验证接口
1 | java复制代码 /** |
结果演示
获取二维码
扫码成功
源码
传送门:微信pc扫码登录
本文转载自: 掘金