最近要做一個視頻分享的web 頁面,查詢到的每條視頻都有一個分享按鈕,計划實現,點擊按鈕實現微信分享到朋友圈 / 朋友的功能。
看過微信JSSDK開發文檔的人都知道,調用微信的分享功能必須要具備以下幾個條件:
- 必須在你的服務號上綁定開發頁面的域名
- 必須要引入微信的JS文件
- 必須要有appId,timestamp,nonceStr,signature
- 如果要分享當前頁面,必須要拿到當前頁面的url
我們的視頻分享是這樣寫的:
appId,timestamp,nonceStr,signature的值是通過后台接口查詢的,要拿到這些值,要通過一個post請求,把要推薦的每個視頻的 id 、 推薦模式(朋友圈 / 朋友)、要分享的當前頁面的 url 返回給后台,才可以拿到這些值。
下面是一個按鈕的點擊事件,看代碼就能明白:
$('.js_container').on('click','.weui-jiaj-video',function(){
//從綁定的屬性中獲取值
var item = $(this).attr('share-data');
if(item) item = JSON.parse(item);
// "1" 朋友圈 "2"朋友
var getVideoId = item.videoId;
// 當前頁面url
var curUrl = location.href.split('#')[0];
// 分享模式
var getRecommendMode = "1";
var shareData = {
videoId:getVideoId,
url:curUrl,
recommendMode:getRecommendMode
};
var getVideoName = item.videoName;
var getCoverUrl = item.coverUrl;
var getForwardUrl = item.forwardUrl;
data = JSON.stringify(shareData);
$.ajax({
type:"post",
url:shareVideo().replace("{userId}", userId),
data:data,
dataType:'json',
contentType: 'application/json; charset=utf-8',
success: function(data) {
//拿到返回的id
var getAppId = data.appId;
var getTimestamp = data.timestamp;
var getNonceStr = data.nonceStr;
var getSignature = data.signature;
wx.config({
debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
appId: getAppId, // 必填,公眾號的唯一標識
timestamp: getTimestamp, // 必填,生成簽名的時間戳
nonceStr: getNonceStr, // 必填,生成簽名的隨機串
signature: getSignature,// 必填,簽名,見附錄1
jsApiList: [ // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
'onMenuShareTimeline',
'onMenuShareAppMessage'
]
});
wx.ready(function(){
//分享到朋友圈
wx.onMenuShareTimeline({
title: getVideoName, // 分享標題
link: getForwardUrl, // 分享鏈接
imgUrl: getCoverUrl, // 分享圖標
success: function () {
// 用戶確認分享后執行的回調函數
weui.toast('分享成功');
},
cancel: function () {
// 用戶取消分享后執行的回調函數
weui.toast('取消分享');
}
});
//分享到朋友
wx.onMenuShareAppMessage({
title: getVideoName, // 分享標題
desc: getVideoName, // 分享描述
link: getForwardUrl, // 分享鏈接
imgUrl: getCoverUrl, // 分享圖標
type: 'video', // 分享類型,music、video或link,不填默認為link
dataUrl: getForwardUrl, // 如果type是music或video,則要提供數據鏈接,默認為空
success: function () {
// 用戶確認分享后執行的回調函數
weui.toast('分享成功');
},
cancel: function () {
// 用戶取消分享后執行的回調函數
weui.toast('取消分享');
}
});
//檢查微信接口是否調用成功
wx.checkJsApi({
jsApiList: ['onMenuShareTimeline'], // 需要檢測的JS接口列表,所有JS接口列表見附錄2,
success: function(res) {
// 以鍵值對的形式返回,可用的api值true,不可用為false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
});
});
},
error: function(data) {
}
});
})
