医疗网站建设新闻,沛县网站设计,网站页面关键字在哪里,网站推广类型通常在个人网站中#xff0c;都会有各种第三方登录#xff0c;其中微信登录需要认证才能使用#xff0c;导致个人开发者不能进行使用此功能#xff0c;但是我们可以使用微信公众号回复特定验证码来进行登录操作。 微信关键词处理
微信公众号关键词自动回复#xff0c;具体… 通常在个人网站中都会有各种第三方登录其中微信登录需要认证才能使用导致个人开发者不能进行使用此功能但是我们可以使用微信公众号回复特定验证码来进行登录操作。 微信关键词处理
微信公众号关键词自动回复具体的处理方式可以查看这篇文章
1.微信公众号关键词处理中加登录逻辑 /*** 微信接口相关控制器* Created by PeakGao on 2023/8/5.*/RestController
RequestMapping(/wechat)
RequiredArgsConstructor
public class ApiWeChatController extends BaseController {Resourceprivate ThirdService thirdService;private final WxMpService wxMpService;private final Pattern pattern Pattern.compile((?i)^PG\\d{4}$);/*** 关键字回复 登录逻辑** param request* return*/PostMapping(produces application/xml; charsetUTF-8)public String handleMsg(HttpServletRequest request) {try {WxMpXmlMessage message WxMpXmlMessage.fromXml(request.getInputStream());String content message.getContent();logger.info(公众号请求类型:{};内容为:{}, message.getMsgType(), content);if (WxConsts.XmlMsgType.TEXT.equals(message.getMsgType())) {if (验证码.equals(content)) {String code RandomUtils.generationNumberChar(6);String msg MessageFormat.format(您的本次验证码:{0},该验证码30分钟内有效。, code);redisUtil.set(Constant.WECHAT_CODE code, code, 1800);return returnMsg(msg, message);}//登录逻辑Matcher matcher pattern.matcher(content);if (!matcher.matches()) {return returnMsg(验证不正确或已过期, message);} else {//TODO 自己的登录逻辑//String msg thirdService.wechatLogin(message);return returnMsg(msg, message);}}} catch (Exception e) {e.printStackTrace();}return ;}/*** 返回消息** param msg 消息内容* param message* return*/private static String returnMsg(String msg, WxMpXmlMessage message) {WxMpXmlOutTextMessage outMessage WxMpXmlOutTextMessage.TEXT().content(msg).fromUser(message.getToUser()).toUser(message.getFromUser()).build();return outMessage.toXml();}}
2、wechatLogin判断用户是否微信登录成功这里只是看验证码过期没 public String wechatLogin(WxMpXmlMessage message) {String content message.getContent().toUpperCase();logger.info(微信扫码公众号登录验证码:{}, content);if (content.length() ! 6) {return 验证码错误;}//先判断登录码是否已过期boolean loginFlag redisUtil.hasKey(Constant.REDIS_KEY_PREFIX Constant.WX_LOGIN_USER_STATUE content);if (!loginFlag) {return 验证码已过期;}//TODO doSoming//根据getFromUser查询用户是否已存在fromUser就是微信的openidUserInfoVO userInfoVO userMapper.selectByUserName(message.getFromUser());//新用户 写自己的逻辑if (userInfoVO null) {}else{}//修改redis缓存 以便监听是否已经授权成功redisService.setCacheObject(RedisConstants.WX_LOGIN_USER content, userInfoVO, 60, TimeUnit.SECONDS);return 网站登录成功(若页面长时间未跳转请刷新验证码);}3、添加获取验证码方法
public R getWechatLoginCode() {String code PG RandomUtils.generationNumberChar(4);redisUtil.set(Constant.REDIS_KEY_PREFIX Constant.WX_LOGIN_USER_STATUE code, false, 60);return R.ok(code);
}4、添加wxIsLogin方法
新增wxIsLogin方法用来监听是否已经回复验证码登录其中logincode就是前端获取的登录验证码
public R wxIsLogin(String loginCode) {Object user redisUtil.get(Constant.REDIS_KEY_PREFIX Constant.WX_LOGIN_USER_STATUE loginCode);if (user null) {return R.error(用户未被授权);}//TODO 登录成功 这里生成token返回return R.ok(token);}5、调用wxIsLogin
前端定时调用wxIsLogin方法来判断是否已经登录成功。这里需要注意的是先调用方法获取登录验证码后同时开始定时任务调用wxIsLogin