在微信公衆號開發中,有這麼一個場景,點擊模板消息中詳情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;
}