微信用户登录

1、微信扫码功能是目前第三方登录常见功能,前不久有个项目刚好用上。这里抽取出来演示下,仁者见仁,智者见智。不要喷。大神直接跳过。哈哈

2、调用的过程和原理参考微信官方接口,这里只给出自己项目后端的一些逻辑。

3、接口controller层。参数code 是前端传过来的,这个需要前端同事提前获取到用户的微信扫码code

@GetMapping("/userWeChatLogin")@ApiOperation(notes = "通过微信扫描登录", value = "/userWeChatLogin")ResultData<?> userWeChatLogin(@Param(value = "code") String code) {try {log.info("userWeChatLogin->code:{}", code);//用户登录return new ResultData<>(ResultCode.SUCCESS, usersService.userWeChatLogin(code));} catch (Exception ex) {Map<String, Object> map = new HashMap<>();ex.printStackTrace();log.info("error:{}", ex.getMessage());map.put("msg", ex.getMessage());return new ResultData<>(ResultCode.FAIL, "", map);}}
/*** 微信用户登录** @param code* @return*/String userWeChatLogin(String code) throws Exception;

4、实现服务类:

 /*** 微信用户登录** @param weCode* @return* @throws Exception*/@Overridepublic String userWeChatLogin(String weCode) throws Exception {if (weCode == null || weCode.isEmpty()) {throw new Exception("微信code请求参数为空");}//通过微信注册用户信息return this.weChartUserRegister(weCode);}

5、服务类的具体实现,微信用户自动注册:

/*** 微信用户自动注册** @param weCode* @return*/private String weChartUserRegister(String weCode) throws Exception {WeCharUserInfo weCharUserInfo = weChatService.getWeChartUserInfo(weCode);if (weCharUserInfo == null) {throw new Exception("微信用户登录验证失败");}QueryWrapper queryWrapper = new QueryWrapper();queryWrapper.eq("open_id", weCharUserInfo.getOpenid());Users users = this.baseMapper.selectOne(queryWrapper);if (users != null) {//写登录日志saveUserLoginLogger(users);return users.getToken();}//注册一个用户信息users = new Users();//设置电话信息if (weCharUserInfo.getPhone() != null && !weCharUserInfo.getPhone().isEmpty()) {users.setPhone(weCharUserInfo.getPhone());}//设置昵称if (weCharUserInfo.getNickname() != null && !weCharUserInfo.getNickname().isEmpty()) {users.setUserName("微信用户" + weCharUserInfo.getNickname());} else {users.setUserName("微信用户");}log.info("user head img:{}", weCharUserInfo.getHeadimgurl());//头像if (weCharUserInfo.getHeadimgurl() != null && !weCharUserInfo.getHeadimgurl().isEmpty()) {users.setAvator(weCharUserInfo.getHeadimgurl());} else {//设置资源服务上的微信头像users.setAvator(this.weCharHeaderUrl);}log.info("user head img:{}", users.getAvator());//微信昵称if (weCharUserInfo.getNickname() != null && !weCharUserInfo.getNickname().isEmpty()) {users.setWechatNickName(weCharUserInfo.getNickname());}//昵称if (weCharUserInfo.getNickname() != null && !weCharUserInfo.getNickname().isEmpty()) {users.setNickName(weCharUserInfo.getNickname());}//添加默认头像users.setToken("");//微信唯一标识users.setOpenId(weCharUserInfo.getOpenid());users.setStatus("1");users.setRegistTime(new Date());users.setMetamask("");users.setMemo("微信注册用户");users.setCreateTime(new Date());users.setUpdateTime(new Date());//写入用户信息this.baseMapper.insert(users);users.setToken(EncodeUtils.encryptToMD5(users.getOpenId()));users.setMetamask("");users.setUpdateTime(new Date());//保存token到用户信息this.saveOrUpdate(users);//写登录日志this.saveUserLoginLogger(users);return users.getToken();}

spring boot通过微信扫码登录相关推荐

  1. thymeltesys-基于Spring Boot Oauth2的扫码登录框架

    thymeltesys thymelte是一个基于Spring Boot Oauth2的扫码登录框架,使用PostgreSQL存储数据,之后会慢慢支持其他关系型数据库.即使你不使用整个框架,只使用其中 ...

  2. Spring Boot+WebSocket实现扫码登录

    一.一张表来确定用户进行登录 User_Token表 字段如下: uuid : 用于确保唯一性 userId :谁登录的 loginTime :登录时间 createTime :创建时间用于判断是否过 ...

  3. Spring Boot + OAuth2.0 实现微信扫码登录,这才叫优雅

    点击"终码一生",关注,置顶公众号 每日技术干货,第一时间送达! 微信开放平台:微信扫码登录功能 官方文档:https://developers.weixin.qq.com/doc ...

  4. Spring Boot + OAuth2.0 实现微信扫码登录,这才叫优雅!!

    微信开放平台:微信扫码登录功能 官方文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_ ...

  5. Java+spring boot+mybatis plus+redis实现企业微信扫码登录并同步通讯录到数据库表中

    1.首先需要有企业微信管理员账号,以便在企业微信管理端设置一些参数,参数如下: 企业id.AgentId-应用id.secret-应用的secret.授权登录的回调域名.通讯录同步下的secret. ...

  6. 微信官方你真的懂OAuth2?Spring Security OAuth2整合企业微信扫码登录

    ❝ 企业微信扫码登录DEMO参见文末. 现在很多企业都接入了企业微信,作为私域社群工具,企业微信开放了很多API,可以打通很多自有的应用.既然是应用,那肯定需要做登录.正好企业微信提供了企业微信扫码授 ...

  7. Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo

    目录 微信扫码登录介绍 开发步骤 微信扫码登录示例 微信开放文档 遇到的问题 使用第三方工具实现网站微信扫码登录 开发前介绍 开发步骤 微信扫码登录获取微信用户信息Demo实现流程 实现效果 实现过程 ...

  8. 个人开发者实现微信扫码登录

    使用码上登录中转微信扫码登录 使用之前最好有一个公网服务器,能够公网访问的 redis 和 mysql 数据库,并且能够部署公网访问的服务 码上登录是一个小程序,对个体开发者提供了免费的微信扫一扫登录 ...

  9. Java后台实现网站微信扫码登录功能,获取用户openid,及微信用户信息(小程序码方案),关联微信小程序(个人主体小程序也可以)

    目录 前言 操作流程 1.注册微信小程序 2.通过后台获取小程序码 注意事项 时序图理解 方案实现步骤 前言 很多业务场景之下我们需要实现微信扫码登录检测登录状态的需求,或需要同步网站与小程序的用户信 ...

最新文章

  1. 杨辉三角 用php写,PHP_PHP写杨辉三角实例代码,复制代码 代码如下: ?php // - phpStudy...
  2. python之Django部署
  3. java插入数据库字符串拼接_JAVA字符串怎么连接?
  4. NB-IoT SNR RSRQ RSRP等信号参数解释
  5. idea样式报错_来自强迫症患者的IDEA设置
  6. android圆形头像 demo,Android图像处理之绘制圆形头像
  7. 《Algorithms》Comparable 实现希尔排序
  8. jq实现文字个数限制_限制字符输入数功能(jquery版和原生JS版)
  9. 物联网操作系统进入收敛期
  10. 微信开发准备(三)--框架以及工具的基本使用
  11. paip.取当天记录的方法sql跟hql hibernate
  12. 计算机校准颜色,显示器颜色校正,教您怎么校准显示器颜色
  13. 2008网站服务器配置,08CMS网站Windows_2008服务器环境配置方法
  14. 计算机为什么无法访问公司共享文件夹,win10系统共享文件夹无法访问的详细方案...
  15. 什么是.NET的程序集?
  16. (转!)利用Keras实现图像分类与颜色分类
  17. getElementByName与getElementByTagName的区别
  18. 2016/10/08 TCL技术笔试题目
  19. 雷达杂波matlab,基于MATLAB的雷达杂波建模与仿真研究
  20. HSSFWorkbook下载xls表格模板及导入excel数据

热门文章

  1. 没有注册类别问题的引起
  2. 对redis的keys方法替换
  3. Python实现带GUI和连接数据库的图书管理系统
  4. Android WebRTC语音视频通话demo
  5. SecureCRT初次使用
  6. trochscript模型初次运行过慢解决方法
  7. 转载 NovaMind思维导图详细使用教程
  8. 微信小程序分销系统开发优势,商城源码开发价格
  9. Oracle 常见问题1000问(不积跬步,无以至千里)
  10. ngrok配置信息_ngrok配置https