微信公眾平臺(tái)在做微信 JS 接口簽名報(bào)以下錯(cuò)誤:invalid signature
按照微信文檔一一對(duì)照檢查:
1. 生成簽名正確
2. nonceStr大小寫正確
3. appid 與用來(lái)獲取 jsapi_ticket 的 appid 一致
以上三條沒有問(wèn)題,然后很多人就不知道該怎么辦了,這里不要忽視第四條,既然前面都正確,那肯定就是url不正確了,然后很多人會(huì)表面看url, 然后就想當(dāng)然的去想url一定正確了, 其實(shí)這里不能想當(dāng)然,比如下面情況,這就導(dǎo)致了,實(shí)際的url并不是我們一開始規(guī)定的url,在后面被加上了?及相關(guān)參數(shù)
微信分享會(huì)根據(jù)分享的不同,為原始鏈接拼接如下參數(shù):
朋友圈 from=timeline&isappinstalled=0
在連接后加上?&再進(jìn)行分享,分享成功,原理
這里給出一個(gè)正確獲取url的方法:
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== off || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
微信群 from=groupmessage&isappinstalled=0
好友分享 from=singlemessage&isappinstalled=0
$url = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];