「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」。
前言
上一篇 我们已经打通了微信服务端和我们本地项目之间的通道,接下来,我们来实现扫码登录的功能。
登录逻辑
- 用户扫码
- 带参传到服务端,服务端根据信息获取用户的具体信息
- 本地服务端根据获取到的微信信息去做逻辑处理,用户已存在则登录,返回登录认证信息,不存在则先注册,之后返回登录认证信息。
具体实现
目前微信服务端已经可以和本地实现通信,接下来我们要去调取微信服务端的接口获取用户的信息,以及公众号二维码等信息。
获取这些信息的前提是获取用户微信服务端授权,基于Oauth2协议,我们已经有了appID,appsecret,接下来获取accessToken,就可以了。
因为频繁的使用到accessToken,所有这里我存在了redis里。
具体实习可以看后面的工具类
1. 获取微信公众号二维码
获取一个带参数的二维码,用户扫码时会将用户一些信息以及参数传给后端,接下我们就可以围绕着这些参数做文章了
2. 扫码触发事件
这里有个小坑,之前看文档一直不明白,微信扫码触发事件,参数是通过xml包的形式发送给我们的,所以正常拿是拿不到的,这里需要整合一下xml解析的工具类,拿到参数。
主要是我们可以拿到用户的openid,之后就是获取用户信息,然后具体的登录逻辑就可以根据实际情况去写代码了。
添加依赖
1 | xml复制代码<dependency> |
实现逻辑(伪代码)
1 | java复制代码@ApiOperation(value = "用户关注/或者取消关注") |
工具类
XmlUtil
1 | java复制代码public class XmlUtil { |
WeChatUtil
1 | java复制代码@Component |
本文转载自: 掘金