最近要做一個視頻分享的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) { } }); })