您的位置:首页 > 移动开发 > 微信开发

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

2016-05-09 00:00 323 查看
摘要: 若第一个博文中取不到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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: