微信分享連結出現config:invalid signature錯誤的解決方法
當開發微信時需要做特定的頁面做分享時,根據官方提供的jssdk.php檔案建立的簽名資料包除錯時,大家碰到的最多的錯誤而且解決最麻煩的大概就是signature錯誤了,如下圖:
分享時提示錯誤“{"errMsg":"config:invalid signature"}”
一般出現這個錯誤多半是簽名獲取失敗,而造成簽名獲取失敗的原因各種各種,餘鬥在開發的時候也遇到過這種情況,搜尋了不少網上教程,解決了自己的問題。接下來,餘鬥將這些解決方法統一整理列出來,希望可以幫到大家:
1、APPID和APPSECRET填錯
這個錯誤可以到官方的除錯頁面獲取access_token看看是否是正確,點選
根據返回的結果可以判斷頁面內的APPID和APPSECRET有沒有出錯,沒有出錯的話可以點選獲取jsapi_ticket
利用前面拿到的access_token 採用http GET方式請求獲得jsapi_ticket,如果出錯的話會返回對應的說明。
2、超過了每日的access_token獲取上限
官方限定每日2000次請求,所以如果沒有快取access_token的話,還是比較容易過限的。
3、檢視微信公共號狀態是否不正常
比如驗證過期了,被封禁了等。
4、確認config中nonceStr
js中駝峰標準大寫S, timestamp與用以簽名中的對應noncestr, timestamp一致。
5、確認url是頁面完整的url
請在當前頁面alert(location.href.split('#')[0])確認,包括'http(s)://'部分,以及'?'後面的GET引數部分,但不包括'#'hash後面的部分,這裡在文章《靜態頁面實現微信分享帶縮圖、標題和描述》最後已做說明,大家可以自行修改好。
6、配置curl是否使用ssl的帶證書(https協議)訪問開關
找到官方提供的jssdk.php,找到程式碼:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
將true改為false,因為一般我們是沒有安裝證書的(https協議),所以將true改為false就好,反之,如果網站安裝了證書,則將false改為true。
7、將網站所在伺服器IP地址加入白名單
8、反向代理問題
如果以上查驗絕沒有解決問題,則檢視下自己的伺服器是否反向代理沒有設定好,nginx配置反向代理程式碼:
proxy_set_header Host $http_host;
轉載:https://www.yudouyudou.com/jiaochengheji/wangzhanjianshe/1237.html