最近做一個移動端H5的項目,里面需要用戶將結果分享給別人,這就涉及到微信右上角的三個點自定義分享功能,下面給大家說說注意的點以及流程
1.首先一定要有一個以企業名義開通的微信公眾號,因為只有企業微信號才有權限去調用分享接口
2.對於分享功能,微信要求需要給訪問的ip配置白名單,要不然會在后台處理程序的時候報錯,ip不在白名單內,配置ip的地方如圖所示
2.引入jssdk.js,具體參考步驟以及文件下載地址請到https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
3.在自定義分享的時候需要用到企業微信公眾號的appid和appsercet,其中appid在前端代碼需要使用,后台不僅需要appid,還需要appsecret,后台通過這兩個參數去做算法處理,給前端返回簽名,appid和appsecret在上圖配置ip白名單的上面
下面是前端請求簽名以及自定義分享接口的具體代碼
$.ajax({
type:'GET',
url:'你的地址',
data: {
"current_url":window.location.href//傳給后台的參數,即當前頁的url
},
dataType:'json',
timeout: 2000,
success: function(data){
// console.log(data);
wx.config({
debug: false, //調試階段建議開啟,這里在調試的時候最好打開,打開后你在調用分享的時候會自動給你彈出一些彈窗,方便調試代碼使用,可以跟蹤是哪一步出問題
appId: '微信公眾號的appid',//APPID
timestamp: data.timestamp,//后台返回的時間戳timestamp
nonceStr: data.noise_str,//后台返回的隨機數nonceStr
signature: data.signature,//后台返回的簽名signature
//需要調用的方法接口,這里有個注意的地方,我之前看別人的博客發現好多都過時了,接口都被微信廢棄了,所以大家如果在調試的時候,如果出現api不通,就去官網看文檔,要不然找問題毫無頭緒
jsApiList: ['updateAppMessageShareData','updateTimelineShareData']
});
/* wx.error(function (res) {
// config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對於SPA可以在這里更新簽名。
alert('error',res);
}); */
wx.ready(function(){
//這個是微信給提供的校驗接口是否可用
/* wx.checkJsApi({
jsApiList: ['updateAppMessageShareData','updateTimelineShareData'], // 需要檢測的JS接口列表,所有JS接口列表見附錄2,
success: function(res) {
// 以鍵值對的形式返回,可用的api值true,不可用為false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
}); */
wx.updateTimelineShareData({
title: '朋友圈分享標題', // 分享標題
link: window.location.href.split('htmls')[0]+'htmls/share.html?work_id='+show_data.work_id, // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致,這里的鏈接根據自己項目地址去拼接
imgUrl: "朋友圈分享圖標", // 分享圖標,絕對路徑
success: function () {
// alert("朋友圈分享成功")
// 用戶點擊了分享后執行的回調函數
},
fail: function(res) {
// alert(res,3333333)
if(res.errMsg.indexOf('function not exist') > -1){
alert('版本過低請升級')
}
}
});
wx.updateAppMessageShareData({
title: '發送給朋友的標題', // 分享標題
desc: '發送給朋友的分享描述', // 分享描述
link: window.location.href.split('htmls')[0]+'htmls/share.html?work_id='+show_data.work_id, // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致,同上
imgUrl: "發送給朋友的分享圖標", // 分享圖標
type: '', // 分享類型,music、video或link,不填默認為link
dataUrl: '', // 如果type是music或video,則要提供數據鏈接,默認為空
success: function () {
// alert("朋友分享成功")
// 用戶點擊了分享后執行的回調函數
}
})
});
},
error:function(xhr,type){
new Error('Ajax error!')
}
});
好啦,以上就是最新的微信自定義分享功能的實現,具體哪里不會可以私信~~