微信用户授权流程+代码

1.先上流程图

这里写图片描述

2.再上代码

@RequestMapping("/callback")
    public void getUserInfo(HttpServletRequest req,HttpServletResponse resp){
        JSONObject jsonObject = WeiXinUtil.getUserInfoByTokenAndOpenID(req);
        System.out.println(jsonObject);
        String openId = jsonObject.getString("openid");
        System.err.println("openId:"+openId);
        boolean flag = false;
        User user=null;
        if (openId!=null) {
//          遍历tb_user中的openId,看看当前的openId是否在数据库中
            List<String> openIds = userService.listAllOpenId();
            for (String open_id : openIds) {
                if (openId.equals(open_id)) {//当前微信openId写入过数据库了
                    flag = true;
                }
            }
//          System.out.println("当前微信用户信息是否存入过数据库:"+flag);
            if (flag) {//绑定过
                try {
                    HttpSession session = req.getSession();
                    user = userService.getUserByOpenId(openId);//NullPointerException?数据库的openId没给值,所以查不到user
                    session.setAttribute(Const.SESSION_USER, user);
                    resp.sendRedirect(WeiXinUtil.DOMAIN+"/New_OPC_2/wxindex.html");
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
            else {//没绑定过,当前微信为新用户,创建一个没有任何权限的新账号
                    try {//创建新用户(默认用户和密码,父用户Id为系统管理员28)
                        HttpSession session = req.getSession();
                        User newUser = new User();
                        newUser.setLoginname(openId.substring(5, 14));
                        newUser.setPassword("123456");
                        newUser.setParentId(28);
                        newUser.setOpenId(openId);
                        //创建新用户,将信息插入到数据库中(此方法在userService的实现类在此地运行报空指针,所以使用userMapper)
                        userService.insertUser(newUser);
                        newUser=userService.getUserByOpenId(openId);
                        session.setAttribute(Const.SESSION_USER,newUser );
                        resp.sendRedirect(WeiXinUtil.DOMAIN+"/New_OPC_2/wxindex.html");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

2.注意事项

  • 新微信用户,登陆后,会在首页接收到提示信息”没有访问权限!”。
  • 如果需要让微信新用户拥有一定的访问权限,就需要管理员在用户管理界面,设置相应的权限。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值