1. 程式人生 > >微信分享的鏈接必須是當前鏈接

微信分享的鏈接必須是當前鏈接

客戶端 rst ret size head 1.0 cat navi target

 1 /**
 2  * 微信分享
 3  *  title 分享標題,默認document.title
 4  *  desc 分享描述,默認document.title
 5  *  link 分享鏈接,默認當前地址
 6  *  imgUrl 分享縮略圖,默認頁面logo
 7  */
 8 var wxShare = function (shareData){
 9     //動態引入微信js
10     var wx_script = document.createElement("script");
11     wx_script.src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js";
12 var first_script = document.getElementsByTagName("script")[0]; 13 first_script.parentNode.insertBefore(wx_script, first_script); 14 15 var ua=window.navigator.userAgent; 16 var reg=/MicroMessenger/i; 17 var iswechat=reg.test(ua); 18 var url=document.location.href; 19 20
shareData.title = shareData.title ? shareData.title : document.title; 21 shareData.desc = shareData.desc ? shareData.desc : document.title; 22 shareData.link = shareData.link ? shareData.link : url; 23 shareData.imgUrl = shareData.imgUrl ? shareData.imgUrl : $(‘.header-logo a img‘).attr(‘src‘);
24 25 if (iswechat) { 26 $.ajax({ 27 url: "/wechat/wxshare.html?url="+encodeURIComponent(shareData.link), 28 type: ‘get‘, 29 dataType: ‘json‘, 30 success: function(rs) { 31 var appId = rs.appId; 32 var timestamp = rs.timestamp; 33 var nonceStr = rs.nonceStr; 34 var signature = rs.signature; 35 wx.config({ 36 debug: false, 37 appId: appId, 38 timestamp: timestamp, 39 nonceStr: nonceStr, 40 signature: signature, 41 jsApiList: [ 42 ‘checkJsApi‘, 43 ‘onMenuShareTimeline‘, 44 ‘onMenuShareAppMessage‘, 45 ‘onMenuShareQQ‘, 46 ‘onMenuShareWeibo‘, 47 ‘onMenuShareQZone‘, 48 ] 49 }); 50 wx.ready(function () { 51 //分享到朋友圈 52 wx.onMenuShareTimeline(shareData); 53 //發送給朋友 54 wx.onMenuShareAppMessage(shareData); 55 //分享到QQ 56 wx.onMenuShareQQ(shareData); 57 //分享到騰訊微博 58 wx.onMenuShareWeibo(shareData); 59 //分享到QQ空間 60 wx.onMenuShareQZone(shareData); 61 }); 62 } 63 }); 64 } 65 }

在紅色箭頭處打斷點,修改分享鏈接為其他鏈接(如圖顯示,shareData.link為當前鏈接)

技術分享

從斷點執行中可知:wx.ready 執行之後,提示錯誤 “{ "errMsg": "config:invalid signature" }” 無效的簽名

技術分享

該處的"無效的簽名"的意思是:該簽名對當前地址無效,畢竟的ajax請求簽名時shareData.link 是其他頁面地址。

wx.ready(function(){

// config信息驗證後會執行ready方法,所有接口調用都必須在config接口獲得結果之後,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,則可以直接調用,不需要放在ready函數中。

});

分享註冊函數 onMenuShareXxx 的地址是當前地址,要求的簽名也必須是當前地址的。

總結:微信分享鏈接必須是當前鏈接。

微信分享的鏈接必須是當前鏈接