最近要作一個視頻分享的web 頁面,查詢到的每條視頻都有一個分享按鈕,計劃實現,點擊按鈕實現微信分享到朋友圈 / 朋友的功能。web
看過微信JSSDK開發文檔的人都知道,調用微信的分享功能必需要具有如下幾個條件:ajax
咱們的視頻分享是這樣寫的:json
appId,timestamp,nonceStr,signature的值是經過後臺接口查詢的,要拿到這些值,要經過一個post請求,把要推薦的每一個視頻的 id 、 推薦模式(朋友圈 / 朋友)、要分享的當前頁面的 url 返回給後臺,才能夠拿到這些值。api
下面是一個按鈕的點擊事件,看代碼就能明白:微信
$('.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) { } }); })