在微信公众号开发中,有这么一个场景,点击模板消息中详情url进入到第三方的界面的问题,不知道别的大神是怎么做的,我第一种方法是,老老实实的按照官方文档去做。
方法1:通过网页授权,获取到code,再通过code获取openid,再根据openid请求接口,获取自己需要的参数。https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=第三方url&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
这样做在实际开发中受到了很大限制。
方法2:需要的参数直接在上面的url中携带。当然需要自己处理一下,直接一次传很多参数,js获取不到,传递一个是可以获取到的,没弄明白为什么。
传递一个参数:(这样可以直接在js里获取到这里传递的一个参数mcssn)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3aa9835c4b466364&redirect_uri=http://ip:port/view/index.html?mcssn=11111111111111111111&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect
传递多个参数:(想办法处理一下,自己的多个参数不用&连接,我这里用*连接了)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3aa9835c4b466364&redirect_uri=http://ip:port/view/index.html?mcssn=11111111111111111111*teacct=123456*mccode=22222222&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect
这样在js里可以用var urlSearch = location.search;
来获取传递过来的参数。这里直接贴出了写的方法:
//调用方法
$(document).ready(function(){
var mcssn = getUrlParams("mcssn");
var teacct= getUrlParams("teacct");
var mccode= getUrlParams("mccode");
console.log(mcssn);
console.log(teacct);
console.log(mccode);
});
function getUrlParams(names) {
//获取?后面的参数
var urlSearch = location.search;
var urlValue="";
//以?*&来拆分
var params = urlSearch.split(/[?*&]/);
for(var i=0;i<params.length;i++){
//如果url参数里包含传递过来names字段,则取=后面的部分
if(params[i].indexOf(names) >= 0 ){
urlValue=params[i].split("=")[1];
return urlValue;
}
}
return urlValue;
}