手機報錯:config:invalid signature問題;網頁開發工具報錯:config:fali,Error:系統錯誤,錯誤碼:63002,invalidsignature問題

折騰了幾天發現是(java老哥單詞少了一個字母)

官方建議: invalid signature簽名錯誤。建議按如下順序檢查:

  • 1.確認簽名算法正確,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
    頁面工具進行校驗。

  • 2.確認config中nonceStr(js中駝峯標準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。

  • 3.確認url是頁面完整的url(請在當前頁面alert(location.href.split(’#’)[0])確認),包括’http(s)😕/‘部分,以及’?‘後面的GET參數部分,但不包括’#'hash後面的部分。

  • 4.確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。

  • 5.確保一定緩存access_token和jsapi_ticket。

  • 6.確保你獲取用來簽名的url是動態獲取的,動態頁面可參見實例代碼中php的實現方式。如果是html的靜態頁面在前端通過ajax將url傳到後臺簽名,前端需要用js獲取當前頁面除去’#‘hash部分的鏈接(可用location.href.split(’#’)[0]獲取,而且需要encodeURIComponent),因爲頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享後的頁面簽名失敗。

個人建議:

  • 1.檢查appId和js接口安全域名配置是否正確
  • 2.檢查IP白名單設置
  • 3.覈查前端和後端appid是否一致

測試經歷
因爲以前做好多次這個,所以一開始以爲很快能解決,無非是appid,js域名問題。結果。。,一星期之久。

開始一直認爲是我前端代碼問題,我自己也認爲url#hash#部分可能有問題。(因爲後臺接口參數通過頁面工具進行校驗,發現正確,最匪夷所思的地方)

所以一直是我在瘋狂嘗試,什麼const url = window.location.href.split(’#’)[0]、const url = window.location.href、Base64.encode(url)、encodeURIComponent(url),未果,冷靜分析,我就懷疑這絕不對不是前端問題,一定是後端或者公衆平臺配置問題。

開始驗證,我直接調用其他項目getConfig接口,以確定bug出在前端還是後端(一個公衆號多個項目公用appid),配置wx.config()測試發現可以使用。確定bug出在後端和公衆平臺

公衆平臺配置:產品覈對一遍,java覈對一遍,我覈對一遍。

於是乎配合後臺,我寫了demo,還是不行,遂建議java老哥完完全全複製另一個項目代碼寫接口,老哥說那個接口就是他寫的,這也是不可能有問題(往往都是以爲不會錯的地方出錯,才最爲致命,我們根本不會去排查他),我也跟着他過了一遍java代碼,確實一樣(此時仍然是舊代碼,一定不能偷懶)。

而後,建議直接擺脫項目從A項目複製代碼,重寫接口給我測試。我說單詞會不會寫錯,或者喫飯誤碰到了多了東西。然後。。。發現java代碼中少寫一個字母。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章