微信公眾號分享時,提示invalid signature,簽名錯誤


按照微信公眾平台的開發文檔,簽名錯誤排查方法如下:

invalid signature簽名錯誤建議按如下順序檢查:

(1)確認簽名算法正確,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具進行校驗。

(2)確認config中nonceStr(js中駝峰標准大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。

(3)確認url是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'后面的GET參數部分,但不包括'#'hash后面的部分。

(4)確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。

(5)確保一定緩存access_token和jsapi_ticket。

(6)確保你獲取用來簽名的url是動態獲取的,動態頁面可參見實例代碼中php的實現方式。如果是html的靜態頁面在前端通過ajax將url傳到后台簽名,前端需要用js獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent),因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享后的頁面簽名失敗。

通過微信簽名工具驗證,完全符合。前端config 的nonceStr 也無寫法錯誤,非常納悶。

如果后台返回的config 信息 與微信簽名工具校驗一致的話,那很有可能是前端訪問的url和后台生成簽名的url不一致導致,

通過前后台打印分析,url 地址完全一致。我做的是前端傳遞url給后台,后台接收到的url參與生成簽名。這時候注意到,前端傳遞的url地址是經過 encodeURIComponent的,所以后台接收到需要 decode 一下,比如php 可以用urldecode 函數,再一嘗試,成功。。。。。。。

總結如果出現 invalid signature,首先可以確定的是你的簽名算法有問題。

簽名錯誤的排查可以這樣來:

1:確保基本的appid 正確,獲取的access_token和jsapi_ticket 正確

2:校驗簽名,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具進行校驗。

3:如果簽名一致,那問題基本出在瀏覽器訪問的url和參與生成簽名的url不一致。

最后附上jssdk的步驟

1:在微信公眾號后台配置js 安全域名,即需要引入jssdk的頁面域名。 需要在域名根目錄下放置微信的檢測文件。

2:配置出ip白名單

3:后台開發人員生成簽名傳遞給前台

4:前端頁面引入script方式 jssdk文件

5:通過ajax獲取config 配置,完成config 配置后即可使用jssdk的各項功能了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM