zoukankan      html  css  js  c++  java
  • 微信小程序授权登陆

        @ApiOperation(value = "微信授权登陆")
        @RequestMapping(method = RequestMethod.GET, value = "/login")
        public ApiResult<LoginVo> login(String code) {
            log.info("/login start ...");
    
            if (StringUtils.isBlank(code)) {
                return fail(CodeEnum.JS_CODE_NULL.getCode(), CodeEnum.JS_CODE_NULL.getText());
            }
    
            //TODO 临时代码,方便获取token
            if (code.startsWith("test_")) {
                String s = code.split("_")[1];
                Member member = memberService.findById(Long.parseLong(s));
                LoginVo vo = new LoginVo();
                vo.setToken(JwtUtil.create(member));
                return success(vo);
            }
    
            Map<String, String> map = new HashMap<>(new HashMap<>(16));
            map.put("appid", appId);
            map.put("secret", secret);
            map.put("js_code", code);
            map.put("grant_type", "authorization_code");
    
            JSONObject jsonObject = JSON.parseObject(HttpUtils.doGet(js_code_2_session, map));
            if (jsonObject == null) {
                return fail(CodeEnum.WX_ERROR.getCode(), CodeEnum.WX_ERROR.getText());
            }
            if (jsonObject.containsKey("errcode")) {
                if (!"0".equals(jsonObject.getString("errcode"))) {
                    return fail(Integer.parseInt(jsonObject.getString("errcode")), jsonObject.getString("errmsg"));
                }
            }
            if (!jsonObject.containsKey("openid")) {
                return fail(CodeEnum.OPENID_ERROR.getCode(), CodeEnum.OPENID_ERROR.getText());
            }
            String openid = jsonObject.getString("openid");
            //String session_key = jsonObject.getString("session_key");
            //String unionid = jsonObject.getString("unionid");
    
            LoginVo vo = new LoginVo();
            vo.setAuthorized(false);
    
            //通过openid查询数据库是否有此用户
            Member q = new Member();
            q.setOpenId(openid);
            List<Member> list = memberService.findListByWhere(q);
            if (list != null && list.size() > 0) {
                if (list.get(0).getNickname() != null) {
                    vo.setAuthorized(true);
                }
            } else {
                Member m = new Member();
                m.setOpenId(openid);
                memberService.saveSelective(m);
            }
    
            //已登陆用户
            Member queryObj = new Member();
            queryObj.setOpenId(openid);
            Member current = memberService.findOne(queryObj);
    
            vo.setOpenid(openid);
            vo.setToken(JwtUtil.create(current));
    
            log.info("/login end ...");
            return success(vo);
        }
  • 相关阅读:
    HTML_表单
    jabc_DAO
    JDBC 加钱减钱
    JDBC 连接池
    JDBC
    视图序列索引
    【Java8】 lambda 特性讲解
    IntelliJ IDEA 常用快捷键
    Java IO 之 装饰模式
    Java IO 讲解
  • 原文地址:https://www.cnblogs.com/xiaomaoyvtou/p/13671820.html
Copyright © 2011-2022 走看看