收藏
回答

SSM框架的javaweb项目做微信授权获取openID问题

现在在做一个H5的分享页面,用户通过点击分享的链接进入页面,现在要求用户在点击链接(每个链接的参数都不一样)时获取用户的openID,后台无法获取到code值,只能通过前端生成再传到后台,但是MVC只能通过后台controller到jsp页面。

我现在是通过controller到页面后,再通过jsp页面ready事件生成code,然后再通过ajax传到后台

var code = sessionStorage.getItem("code");//取出这次会话中session的值

if (code != null) {

//通过ajax传到后台获取openId

$.ajax({

async: false,

type:'get',

url:'getOpenId',

dataType:'json',

data : {'code' : code},

success:function(result){

                   alert("success!!!");

}

})

}else{

window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx251314c46ac42181&redirect_uri="+encodeURIComponent(currurl)+"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";

sessionStorage.setItem("code",getUrlParam("code"));//保存到这次会话的session中

}

//正则匹配取URL中code的值

function getUrlParam(name) {

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); 

var r = location.href.substr(1).match(reg); 

if (r != null) 

return unescape(r[2]);

return null; 

}



但是这样做或刷新两次页面,用户体验很差,各位大佬有什么好的方案?请指点一下。。。

回答关注问题邀请回答
收藏
登录 后发表内容