若有多台服务器且为部署全局session 用传值方法进入微信公众号

    String code = request.getParameter("code");
            if (org.apache.commons.lang.StringUtils.isNotBlank(code)) {//通过code判断请求来源微信
                log.info("___微信访问___code:" + code);
                // 获取网页授权access_token
                if(null == (request.getSession().getAttribute("extSource"))){ //返回后不会二次解析code导致崩溃
                    WeiXinOauth2Token weixinOauth2Token = AdvancedUtil
                            .getOauth2AccessToken("APPID", "APPSECRET", code);
                    String openId = weixinOauth2Token.getOpenId();
                    request.getSession().setAttribute("wxopenId", openId);
                }
            }
            if (request.getParameter("openId") != null || request.getSession().getAttribute("wxopenId") != null) {
                String openId = "";
                if (request.getParameter("openId") != null) {
                     openId = request.getParameter("openId");
                     request.getSession().setAttribute("wxopenId", openId);
                }else {
                     openId = (String) request.getSession().getAttribute(
                            "wxopenId");
                }
                request.getSession().setAttribute("extSource", 1);
                log.info("___微信访问___openid:" + openId);
                MemberExtRels meExtRels = new MemberExtRels();
                meExtRels.setExtId(openId);
                meExtRels = memberExtRelsService.selectMemberExtRels(meExtRels);
                if (null != meExtRels) { //若表中有此openid,则获取相关boid,从而获取userinfo。
                    userInfo = this.getWeiXinUserInfo(meExtRels.getBoId(),
                            request);
                    log.info("___微信访问___userinfo:" + userInfo);
                } else if (null != userInfo) { //将通过openid和boid获取的userinfo插入对应表中。
                    memberExtRelsService.addMemberExtRels(openId,
                            userInfo.getBoId());
                }else{ //若没有相关信息,则为新用户,发送至登录页面。
                    try {
                        response.sendRedirect(request.getContextPath()
                                + mid + "/mobileLogin.do?weixinopenId=" + openId);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return false;
                }
            }

你可能感兴趣的:(若有多台服务器且为部署全局session 用传值方法进入微信公众号)