當開發微信時需要做特定的頁面做分享時,根據官方提供的jssdk.php文件創建的簽名數據包調試時,大家碰到的最多的錯誤而且解決最麻煩的大概就是signature錯誤了,
分享時提示錯誤“{"errMsg":"config:invalid signature"}”
一般出現這個錯誤多半是簽名獲取失敗,而造成簽名獲取失敗的原因各種各種,餘鬥在開發的時候也遇到過這種情況,搜索了不少網上教程,解決了自己的問題。接下來,餘鬥將這些解決方法統一整理列出來,希望可以幫到大家:
1、APPID和APPSECRET填錯
這個錯誤可以到官方的調試頁面獲取access_token看看是否是正確,點擊獲取獲取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地址加入白名單
登錄微信公衆平臺,依次點擊設置->安全中心->IP白名單進行添加或修改
ps:微信開放平臺、公衆平臺、商戶平臺區別
一.微信開放平臺
主要面對移動應用/網站應用開發者,爲其提供微信登錄、分享、支付等相關權限和服務。
微信開放平臺還提供了數據統計功能,用於開發者統計接入應用的登錄、分享等數據情況。
接入步驟
已京東APP舉例,比如京東APP需要使用微信登錄、分享和微信支付功能,首先註冊微信開發平臺-開發者賬號,並按照以下流程在微信開放平臺創建京東APP:
審覈通過後,即可獲得以下的初級權限,如要獲得更高如微信支付權限,需要再單獨申請,具體微信支付權限申請步驟詳見附件《移動應用-微信支付權限申請流程》
二.微信公衆平臺
微信公衆平臺用於管理、開放微信公衆號(包括訂閱號、服務號、企業號),簡單的說就是微信公衆號的後臺運營、管理系統。
後臺功能(以服務號介紹)
(1) 基礎運營功能:公衆號申請成功後即可獲得羣發功能、自動回覆、自定義菜單、投票管理;
(2) 高級功能:微信公衆平臺還提供了以下高級的功能來豐富公衆號,以下權限需要二次開發。
(3) 微信支付:提供公衆號內微信支付能力,和移動應用一樣也需要單獨申請,流程和移動APP流程類似。
(4)管理:包括已關注用戶管理、消息管理、素材管理
(5)推廣:包括廣告主(定向投放廣告,精準推廣自己的服務)和流量主(按月獲取廣告收入)
(6)統計:用戶分析、圖文分析、消息分析、接口分析(自定義菜單調用量)
三.商戶平臺
無論是申請 公衆平臺商戶 還是 開放平臺商戶,申請成功後,都會擁有商戶平臺賬號,可登陸商戶平臺進行操作。
商戶平臺主要就是做微信支付用的,如果APP或者公衆號需要接入支付功能,那麼就需要在公衆平臺申請公衆平臺商戶,或者在開放平臺申請開放平臺商戶。申請成功後會分配商戶平臺賬號。
8、反向代理問題
如果以上查驗絕沒有解決問題,則查看下自己的服務器是否反向代理沒有設置好,nginx配置反向代理代碼:
proxy_set_header Host $http_host;