微信二次分享解決方案
阿新 • • 發佈:2018-12-10
這幾天做一個微信公眾號的需求,有個分享功能。發現分享從公眾號分享到微信是正常的,可以看到縮圖、名稱、描述,但是直接轉發該分享或者點開該分享再次通過微信分享時,就只出現了連結地址,也沒有縮圖。測試的圖片如下:
圖1 第一次分享-正確
圖2 第二次分享-不正確
原因:我的情況是,觸發分享事件的頁面與分享的目標頁面不是同一個頁面,當用戶通過分享連結點開頁面並分享該頁面,由於該頁面(前面提到的分享的目標頁面)並未通過config介面注入許可權驗證配置和分享資訊配置(縮圖、名稱、描述),所以會出現圖2的情況。 解決方案:在分享的目標頁面通過config介面注入許可權驗證配置和呼叫微信分享介面配置分享資訊(縮圖、名稱、描述)即可。
分享功能如下: 在頁面引入js檔案:
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js" charset="utf-8" async="async"></script>
/**獲取微信授權並分享*/
function getWeChatAuthorizationAndShare(){ //也可以用立即執行函式
$.ajax({
url: '/api/getJsAPI',//獲取簽名的介面
data: {url: location.href},
type: 'post' ,
success: function (json) {
if (wx) {
wx.config({
debug:false,
appId: json.appid,// 必填,公眾號的唯一標識
timestamp: json.timestamp,// 必填,生成簽名的時間戳
nonceStr: json.nonce,// 必填,生成簽名的隨機串
signature: json.signature,// 必填,簽名,見附錄1
jsApiList: [
'onMenuShareAppMessage', //1.0 分享到朋友
'onMenuShareTimeline', //1.0分享到朋友圈
'updateAppMessageShareData', //1.4 分享到朋友
'updateTimelineShareData', //1.4分享到朋友圈
] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});
wx.ready(function () {
var imgUrl = $('.card-item').find('.card-img')[0].src,//縮圖
link = '/card/toCardSharePage?cid=' + id + '&giveUid=' + giveUid;//分享頁面連結
var shareData = {
title: '某某使用者專享優惠卡券贈予',
desc: '好的東西我都想與你一起分享~',//這裡請特別注意是要去除html
link: link,
imgUrl: imgUrl
};
if(wx.onMenuShareAppMessage){ //微信文件中提到這兩個介面即將棄用,故判斷
wx.onMenuShareAppMessage(shareData);//1.0 分享到朋友
wx.onMenuShareTimeline(shareData);//1.0分享到朋友圈
}else{
wx.updateAppMessageShareData(shareData);//1.4 分享到朋友
wx.updateTimelineShareData(shareData);//1.4分享到朋友圈
}
});
}
}
});
}