微信js-sdk簽名錯誤invalid signature解決方案


轉自我的個人博客《微信js-sdk簽名錯誤invalid signature解決方案》

 

此前在做微信公眾號web頁面使用微信JS SDK時,就遇到過invalid signature錯誤,最近做公眾號web開發又遇到同樣的問題,記錄一下解決過程,下次少走彎路。

微信JS接口簽名校驗工具:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
微信JS接口簽名校驗工具


問題排查步驟

1、后端打印排序后的簽名參數和簽名字符串

簽名參數:
jsapi_ticket=kgt8ON7yVITDhtdwci0qeav68VJEN2x-YTNhPDAliYfI7RkRXepYfOvN8QrfnE-17a9NDKHT5MTKr4jEsLf9Sw&noncestr=DJ7KYIkfyi&timestamp=1590541485947&url=https://xxx.xxx.com/mp/comment?employeeId=190928100000

簽名字符串:
a1b4ff4ca592caa22b45047a8c119ce68aa588c5

2、使用校驗工具輸入所有參數,校驗工具提示:不是合法的 jsapi_ticket

排查獲取ticket的方法,我的getTicket方法是復制的getAccessToken方法,發現有漏改的地方,改正。

發布進行調試,依舊報錯invalid signature;

3、再次將所有參數輸入到調試工具進行調試,不再提示ticket不合法,點擊生成簽名,進行對比

校驗工具排序后的參數列表:jsapi_ticket=kgt8ON7yVITDhtdwci0qeav68VJEN2x-YTNhPDAliYfI7RkRXepYfOvN8QrfnE-17a9NDKHT5MTKr4jEsLf9Sw&noncestr=DJ7KYIkfyi&timestamp=1590541485&url=https://xxx.xxx.com/mp/comment?employeeId=190928100000

校驗工具生成的簽名為:ff0bf3db633e65aa906efba0bf2e7e3bbf5cf31f

首先對比自己程序打印的排序后參數列表字符串發現,我的timestamp是System.currentTimeMillis()生成,為13位,微信簽名校驗工具排序后變成了10位,修改獲取時間戳方法為System.currentTimeMillis()/1000

再次發布調試,簽名校驗通過。

4、如果自己排序的參數列表和工具生成的參數列表一致,但是生成的簽名不一致,則繼續排查自己的簽名算法是否正確。


免責聲明!

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



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