微信用户授权流程+代码

来源:互联网 发布:软件系统调研报告 编辑:程序博客网 时间:2024/05/21 17:50

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.注意事项

  • 新微信用户,登陆后,会在首页接收到提示信息”没有访问权限!”。
  • 如果需要让微信新用户拥有一定的访问权限,就需要管理员在用户管理界面,设置相应的权限。
原创粉丝点击