第一步:先登錄你的微信公眾號,附上登錄鏈接https://mp.weixin.qq.com/
第二步:獲取你的AppID(應用ID) 和 AppSecret(應用密鑰) 如下圖
第三步:設置你的JS安全域名 ,在公眾號設置->功能設置->JS接口安全域名 填寫你的項目域名即可 例如 :http://m.1e2r.com 備注:登錄后可在“開發者中心”查看對應的接口權限。 (如下圖)
以上是公眾號需要設置的..
程序方面參考 http://203.195.235.76/jssdk/ 您可以用微信打開這個鏈接查看擁有的權限接口
常見問題及完整 JS-SDK 文檔地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
1.引入JS文件
1.1:在需要調用JS接口的頁面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js 詳情請查看 JS-SDK 文檔
2.通過config接口注入權限驗證配置如下圖
另外附上代碼:(在你需要分享的頁面地方寫入)
wx.config({
debug : false,
appId : '{$sign["appId"]}', //appid
timestamp : {$sign["timestamp"]}, //時間戳
nonceStr : '{$sign["noncestr"]}', //簽名隨機碼
signature : '{$sign["signature"]}', //簽名
jsApiList : ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone']//權限列表
});
wx.ready(function () {
document.querySelector('#checkJsApi').onclick = function () {//檢測當前環境是否支持接口
wx.checkJsApi({
jsApiList: [
'getNetworkType',
'previewImage'
],
success: function (res) {
alert(JSON.stringify(res));
}
});
};
wx.onMenuShareAppMessage({//分享給朋友
title : '分享的標題',
desc : '分享的描述信息',
link : '分享的鏈接 為當前URL 也是簽名的URL',
imgUrl : '分享的圖片',
trigger : function (res) {
},
success: function (res) {
//您可以操作啦
},
cancel: function (res) {
alert('您已經取消了分享');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
wx.onMenuShareTimeline({ //分享到朋友圈
title : '分享的標題',
desc : '分享的描述信息',
link : '分享的鏈接 為當前URL 也是簽名的URL',
imgUrl : '分享的圖片',
trigger : function (res) {
},
success: function (res) {
//您可以操作啦
},
cancel: function (res) {
alert('您已經取消了分享');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
wx.onMenuShareQQ({ //分享到QQ
title : '分享的標題',
desc : '分享的描述信息',
link : '分享的鏈接 為當前URL 也是簽名的URL',
imgUrl : '分享的圖片',
trigger : function (res) {
},
complete: function (res) {
alert(JSON.stringify(res));
},
success: function (res) {
//您可以操作啦
},
cancel: function (res) {
alert('您已經取消了分享');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
wx.onMenuShareWeibo({ //分享到騰訊微博
title : '分享的標題',
desc : '分享的描述信息',
link : '分享的鏈接 為當前URL 也是簽名的URL',
imgUrl : '分享的圖片',
trigger : function (res) {
},
complete: function (res) {
alert(JSON.stringify(res));
},
success: function (res) {
//您可以操作啦
},
cancel: function (res) {
alert('您已經取消了分享');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
wx.onMenuShareQZone({ //分享到QQ空間
title : '分享的標題',
desc : '分享的描述信息',
link : '分享的鏈接 為當前URL 也是簽名的URL',
imgUrl : '分享的圖片',
trigger : function (res) {
},
complete: function (res) {
alert(JSON.stringify(res));
},
success: function (res) {
//您可以操作啦
},
cancel: function (res) {
alert('您已經取消了分享');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
});
wx.error(function (res) {
alert(res.errMsg); //顯示錯誤
});
程序部分(數據結構見附件)
//獲取token function getToken(){ $data = M('weixintoken')->where('type=1')->field('token,expire,time,Id,type')->order('time DESC')->find(); if ($data) { if($data['time']+$data['expire']-60 > time()){ return array('token'=>$data['token'],'msg'=>'','statue'=>1); } else { M('weixintoken')->where(array('Id'=>$data['Id']))->delete(); //刪除過期 } } $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".C("WEIXIN_APPID")."&secret=".C("WEIXIN_SECRET"); $key = curl_init(); curl_setopt($key,CURLOPT_URL,$url); curl_setopt($key,CURLOPT_RETURNTRANSFER,1); curl_setopt($key, CURLOPT_SSL_VERIFYPEER, false); //不驗證證書 //curl_setopt($_key, CURLOPT_SSL_VERIFYHOST, false); //不驗證證書 $reslut = curl_exec($key); $reslut = json_decode($reslut); if (curl_errno($key)) { return array('token'=>'','msg'=>curl_error($key),'statue'=>0); }else{ if (isset($reslut->errcode) && $reslut->errcode!='') { return array('token'=>'','msg'=>$reslut->errmsg,'statue'=>0); } else { $token = $reslut->access_token; $expire = intval($reslut->expires_in); M('weixintoken')->add(array('token'=>$token,'expire'=>$expire,'type'=>1,'time'=>time())); return array('token'=>$token,'msg'=>'','statue'=>1); } } } //獲取ticket function getTicket(){ $token = getToken(); if ($token['statue'] && $token['token']!='') { $data = M('weixintoken')->where('type=2')->field('token,expire,time,Id,type')->order('time DESC')->find(); if ($data) { if($data['time']+$data['expire']-60 > time()){ return array('token'=>$data['token'],'msg'=>'','statue'=>1); } else { M('weixintoken')->where(array('Id'=>$data['Id']))->delete(); //刪除過期 } } $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token['token']."&type=jsapi"; $key = curl_init(); curl_setopt($key,CURLOPT_URL,$url); curl_setopt($key,CURLOPT_RETURNTRANSFER,1); curl_setopt($key, CURLOPT_SSL_VERIFYPEER, false); //不驗證證書 //curl_setopt($_key, CURLOPT_SSL_VERIFYHOST, false); //不驗證證書 $reslut = curl_exec($key); $reslut = json_decode($reslut); if (curl_errno($key)) { return array('token'=>'','msg'=>curl_error($key),'statue'=>0); }else{ if($reslut->errcode == 0) { $token = $reslut->ticket; $expire = intval($reslut->expires_in); M('weixintoken')->add(array('token'=>$token,'expire'=>$expire,'type'=>2,'time'=>time())); return array('token'=>$token,'msg'=>$reslut->errmsg,'statue'=>1); } else { return array('token'=>'','msg'=>$reslut->errmsg,'statue'=>0); } } } else { return $token; } } //加密 function jsApiSign($noncestr='',$timestamp='',$url=''){ if ($noncestr!='' && $timestamp!='' && $url!='') { $ticket = getTicket(); if ($ticket['statue'] && $ticket['token']!='') { $string = 'jsapi_ticket='.$ticket['token'].'&noncestr='.$noncestr.'×tamp='.$timestamp.'&url='.$url; writelog('shastring:',$string.'sha1:'.sha1($string)); return sha1($string); } else { return FALSE; } } else { return FALSE; } } //加密分享返回相應參數 function shareSign($url=''){ if ($url!='') { $time = time(); $noncestr = substr(md5($time),0,6); $signature = jsApiSign($noncestr,$time,$url); if (!$signature) { return FALSE; } else { return array('noncestr'=>$noncestr,'signature'=>$signature,'timestamp'=>$time,'appId'=>C("WEIXIN_APPID")); } } else { return FALSE; } }