spring boot通过微信扫码登录

微信用户登录

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
     */
    @Override
    public 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();
    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot框架是一种轻量级、开箱即用的Java开发框架,它大大简化了企业级应用的开发过程。要实现微信扫码登录,可以使用Spring Boot框架结合微信开放平台的API来实现。以下是实现微信扫码登录的步骤: 1. 注册微信开放平台账号并创建应用,获取AppID和AppSecret。 2. 创建Spring Boot项目并导入相关依赖,如web、httpclient等。 3. 在配置文件application.properties中配置微信开放平台的AppID和AppSecret。 4. 创建一个控制器,用于处理登录相关的请求。 5. 定义一个生成微信扫码登录链接的方法,该方法使用AppID、重定向URI和state等参数生成微信登录链接。 6. 在控制器中定义一个登录请求的接口,该接口返回生成的微信扫码登录链接。 7. 创建一个回调接口,用于处理微信登录成功后的回调请求。 8. 在回调接口中获取微信的授权code,通过code和AppID、AppSecret等参数向微信服务器发送请求,获取用户的唯一标识openid。 9. 将获取到的openid存储到数据库或Session中,表示用户已登录。 10. 在需要验证用户登录状态的接口中,通过openid验证用户是否已登录。 以上是使用Spring Boot实现微信扫码登录的基本步骤,通过控制器处理登录和回调接口,以及与微信服务器的交互,可以实现用户使用微信扫码登录系统的功能。当然,具体实现中还需要考虑安全性、数据持久化等问题,以及前端页面的设计和展示等方面的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值