覈對官方步驟,確認簽名算法。javascript
簽名是正確,上面的步驟還沒能解決你的問題(invalid signature)那就用是url的問題,注意:微信公衆號必須配置了你調試的安全域名(能夠配置二級域名:xxx.com,而不用配置多個a.xxx.com/b.xxx.com等)。php
緣由:微信分享時候會給你當前頁面添加多個參數,你sha1時候必須保證url地址是微信給你加了參數以後的地址,這樣纔不會報config:invalid signature.html
解決方案:sha1以前url必須是解碼以後的正常的肉眼直接能識別的url,若是你用的是靜態頁面,在你配置wx.config以前,先經過encodeURIComponent(location.href.split('#')[0])把當前url編碼傳遞到後臺,後臺經過decodeURIComponent解碼,核心代碼以下:前端
前臺html頁面,編碼傳遞url:java
jQuery.post("/xxx", {"url": encodeURIComponent(window.location.href.split('#')[0]),"t": new Date().getTime()}, function (result) { if (result.errno != 0) { alert("您當前的網絡不穩定請稍後再試!"); return; } var shareUrl = result.data.url; wx.config({ debug: true, // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。 appId: 'xxx', // 必填,公衆號的惟一標識 timestamp: result.data.timestamp, // 必填,生成簽名的時間戳 nonceStr: result.data.nonceStr, // 必填,生成簽名的隨機串 signature: result.data.signature,// 必填,簽名,見附錄1 jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,須要使用的JS接口列表,全部JS接口列表見附錄2 });
後臺代碼:ajax
let url = decodeURIComponent( this.post().url); //重點,解碼前臺傳遞url //當前時間戳 let timestamp = parseInt( new Date().getTime()/1000); //隨機字符串 let nonceStr = Math.random().toString(36).substr(2,16);