0 前言
在我们日常逛各个网站的过程中,部分网站需要登录,才能进行资源访问,这是很普遍的现象。
引流
两种
微信开放平台网站应用网站应用名称同意拒绝
如下图所示。
不支持个人用户注册
认证通过的微信服务号生成带参数的二维码关注公众号个人不支持申请服务号
接下来将分析这种通过服务号的网站登录方式。
1 准备工作
实现此功能,需要准备如下:
- 一个认证通过的服务号
- 一台服务器
- 一个已备案的域名
认证通过的服务号
申请测试号
Redis
最后是域名,必须通过备案,否则微信后台的服务器地址,不允许添加此域名。
事件消息后台→开发→基本配置→服务器配置开启
2 原理分析
时序图
其核心流程如下:
浏览器登录页面自己服务器自己服务器SessionKEY值KEY值初始参数数组存入RedisKEY值服务号生成二维码带此KEY值的二维码
如下图所示:
自己服务器
如下图所示:
关注微信APP微信服务器关注事件微信服务器关注事件用户信息二维码参数POST自己服务器事件接收API
直接进入公众号上述信息
事件KEY值发送方账号
自己服务器微信服务器事件消息解析KEY值OpenIDOpenID获取用户信息基本信息(只有昵称、性别、头像URL,这些都是***息)KEY值重新存入Redis数据库修改该用户的登录状态
浏览器轮询登录状态已登录状态拉取用户信息进行登录
在这整个过程中,浏览器和自己服务器是始终保持通讯状态的,以及时获取用户的登录结果。
这个过程,有这么几点需要注意:
保持通讯生成的带参数的二维码客户端浏览器
如下图所示:
3 具体实现
GETPOSTRedisXML服务器配置项目部署
SSMSpring BootJava框架TPLaravelPHP框架