準備工作
- 需要一個認證的微信公衆號,一定要確定認證
- 在登錄微信公衆平臺
https://mp.weixin.qq.com
- 在公衆號設置–>功能設置,填寫設置Js接口安全域名
- Js安全域名是需要把微信提供的文件,放在指定域名或者目錄下面可以訪問的。
配置信息
下載微信參考代碼,主要是獲取signature
http://demo.open.weixin.qq.com/jssdk/sample.zip
- 在獲取signature之前,需要獲取accessToken 和 對應的Ticket,這兩個方式都比較簡單,不在列舉
- 生成簽名的方式,就在微信的實例代碼裏面,不在贅述。
注意
- 獲取簽名等信息,必須通過服務器返回,不能再前端js生成
- 對應生成的ticket,accessToken,注意要緩存,也有有效期,如果不緩存,訪問量大的情況下,微信有可能封號。
- 生成signature所需要的url必須是前端傳入的模式,不能寫死,寫死的話,微信似乎有檢測機制,不能正常的分享成功。
前端配置信息
- 引入微信分享的JS_SDK
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
https://res.wx.qq.com/open/js/jweixin-1.2.0.js
- 注意,如果自己的域名模式是https模式,要使用https模式,不然會出現mixed content block,微信js不會執行
- JS-sdk中的方法要在獲取signature之後再執行,不然有可能會執行錯誤等,同時分享的調用要在wx.ready方法體裏面執行,即微信配置都okay的情況下在執行。
示例代碼
$.get("獲取微信signature的接口",
{"url":location.href.split('#').toString()}).done(function (data) {
// 注意這裏的url,一定要這樣寫,也就是動態獲取,不然也不會成功的。
console.log(data);
if (data.header.code == 200) {
var wx_info = data.body.result.wx_info;
if (wx_info.signature != null) {
// 配置
wx.config({
debug: false, // 測試階段,可以寫爲true,主要是爲了測試是否配置成功
appId: wx_info.appId,
timestamp: wx_info.timestamp,
nonceStr: wx_info.nonceStr,
signature: wx_info.signature,
jsApiList: ['checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ',
'onMenuShareQZone']
});
var title = "";
var desc = "";
// 分享的圖片,最好是正方形,不是也沒關係,但是一定是http模式,即絕對路徑,而不是服務器路勁
var imgUrl = "";
// 這裏的地址可以寫死,也可以動態獲取,但是一定不能帶有微信分享後的參數,不然分享也是失敗的
var link = "";
// 分享給朋友、QQ、微博
var shareData = {
"imgUrl": imgUrl,
"title": title,
"desc": desc,
'link': link
};
// 分享到朋友圈
var shareToTimeline = {
"imgUrl": imgUrl,
"title": title,
'link': link,
"desc": desc
}
wx.ready(function() {
wx.onMenuShareTimeline(shareToTimeline);
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareQQ(shareData);
wx.onMenuShareQZone(shareData);
wx.error(function(res) {
alert(res.errMsg);
});
});
}
}
}).fail(function (msg) {
console.log("error:" + msg);
});