1.確認(rèn)簽名算法正確,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁(yè)面工具進(jìn)行校驗(yàn)。
2.確認(rèn)config中nonceStr(js中駝峰標(biāo)準(zhǔn)大寫S), timestamp與用以簽名中的對(duì)應(yīng)noncestr, timestamp一致。
3.確認(rèn)url是頁(yè)面完整的url(請(qǐng)?jiān)诋?dāng)前頁(yè)面alert(location.href.split('#')[0])確認(rèn)),包括'http(s)://'部分,以及'?'后面的GET參數(shù)部分,但不包括'#'hash后面的部分。
4.確認(rèn) config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。
5.確保一定緩存access_token和jsapi_ticket。
這個(gè)是重點(diǎn):
確保你獲取用來簽名的url是動(dòng)態(tài)獲取的,動(dòng)態(tài)頁(yè)面可參見實(shí)例代碼中php的實(shí)現(xiàn)方式。如果是html的靜態(tài)頁(yè)面在前端通過ajax將url傳到后臺(tái)簽名,前端需要用js獲取當(dāng)前頁(yè)面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent),因?yàn)轫?yè)面一旦分享,微信客戶端會(huì)在你的鏈接末尾加入其它參數(shù),如果不是動(dòng)態(tài)獲取當(dāng)前鏈接,將導(dǎo)致分享后的頁(yè)面簽名失敗。
教如何驗(yàn)證是否正確方法:
url動(dòng)態(tài)獲取的方法是:
$protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off || $_SERVER[SERVER_PORT] == 443) ? "https://" : "http://"; $url = $protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];復(fù)制代碼
步驟:
首先你在頁(yè)面alert(location.href.split('#')[0]);
然后你再打印出動(dòng)態(tài)獲取的url是否和你alert的地址是否一樣。一定要一模一樣,包括大小寫。
如果發(fā)現(xiàn)不一樣,那就按照自己的需求改。反正要一樣。驗(yàn)證簽名一定可以通過的。
如果還有什么不明白的可以評(píng)論,我會(huì)一一回復(fù)。
本文發(fā)布于:2023-02-28 21:09:00,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://m.newhan.cn/zhishi/a/1677730524104920.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:invalid signature.doc
本文 PDF 下載地址:invalid signature.pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |