微信小程序的登录模块实现

发布时间:2024年01月09日

用户联动微信小程序。相关的实现层代码

发送url请求。

    /**
     * 登录验证
     *
     * @param code 临时登录码
     * @return ·
     */
    @Override
    public Map<String, Object> checkLogin(String code) {
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + appsecret
                + "&js_code=" + code + "&grant_type=authorization_code";
        String errmsg = "";
        String errcode = "";
        String session_key = "";
        String openid = "";
        String token = "";
        WeChatSessionModel weChatSessionModel;
        //向微信服务器发送请求,传出一些返回值
        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
        //校验发送是否成功
        if (responseEntity.getStatusCode() == HttpStatus.OK) {
            //如果成功则取出返回体的内容
            String sessionData = responseEntity.getBody();
            //取出微信返回的内容,并且使用gson工具类,将其封装进入wx模块
            weChatSessionModel = new Gson().fromJson(sessionData, WeChatSessionModel.class);
            openid = weChatSessionModel.getOpenid();
            session_key = weChatSessionModel.getSession_key();
            errcode = weChatSessionModel.getErrcode();
            errmsg = weChatSessionModel.getErrmsg();
        } else {
            //如果登录失败,则提取错误内容返回数据信息
            map.put("errmsg", errmsg);
            return map;
        }
        if ("".equals(openid) || openid == null) {
            //登录未失败,但是openid获取失败,也报错
            map.put("errmsg", errmsg);
            return map;
        } else {
            //查询openid在数据库是否存在
            LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(User::getOpenid, openid);
            User user = userMapper.selectOne(queryWrapper);
            //将session_key返回给前端
            map.put("session_key", session_key);
            if (user == null) {
                //当用户信息不存在时注册新用户。
                user = new User(UUID.randomUUID().toString(), openid, "微信用户", new Date(), "default.jpg");
                userMapper.insert(user);
            }
            //将数据返回给前端
            map.put("user", user);
            map.put("token", JWTUtils.createToken(user.getId().toString()));
            return map;
        }
    }

文章来源:https://blog.csdn.net/weixin_55990599/article/details/135489156
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。