微信公众号中url传递参数到第三方的网页

在微信公众号开发中,有这么一个场景,点击模板消息中详情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

传递多个参数:(想办法处理一下,自己的多个参数不用&连接,我这里用*连接了)
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//如果url参数里包含传递过来names字段,则取=后面的部分
        if(params[i].indexOf(names) >= 0 ){
            urlValue=params[i].split("=")[1];
            return urlValue;
        }
    }

   return urlValue;
}   

你可能感兴趣的:(公众号开发)