微信-js sdk invalid signature簽名錯誤 問題解決

若是出現 invalid signature,首先能夠肯定的是你的簽名算法有問題。
建議:首先查看微信官方網站給出的解決方案,連接爲: http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.htmlphp

1. invalid signature簽名錯誤html

建議按以下順序檢查:前端

簽名生成規則以下:
參與簽名的字段包括有效的 jsapi_ticket(獲取方式詳見微信 JSSDK 文檔), noncestr (隨機字符串,由開發者隨機生成),timestamp (由開發者生成的當前時間戳), url(當前網頁的URL,不包含#及其後面部分。注意:對於沒有隻有域名沒有 path 的 URL ,瀏覽器會自動加上 / 做爲 path,如打開 http://qq.com 則獲取到的 URL 爲 http://qq.com/)。
特別注意:你在利用參數生成簽名的時候,要對全部待簽名參數按照字段名的 ASCII 碼從小到大排序(字典序)後,使用 URL 鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串 string1。這裏須要注意的是全部參數名均爲小寫字符。個人最開始的錯誤就是沒有注意到生成簽名的那幾個參數要按照key=value的樣式鏈接成一個字符串,而後在sha1加密生成。ajax

  • 確認config中nonceStr(js中駝峯標準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。
  • 確認url是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'後面的GET參數部分,但不包括'#'hash後面的部分。
  • 確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。
  • 確保必定緩存access_token和jsapi_ticket。
  • 確保你獲取用來簽名的url是動態生成的,動態頁面可參見實例代碼中php的實現方式。若是是html的靜態頁面在前端經過ajax將url傳到後臺簽名,前端須要用js獲取當前頁面除去'#'hash部分的連接(可用location.href.split('#')[0]獲取),由於頁面一旦分享,微信客戶端會在你的連接末尾加入其它參數,若是不是動態獲取當前連接,將致使分享後的頁面簽名失敗。


2. 每次後臺網頁更新以後,微信訪問效果沒有出來。
問題:手機端,網頁緩衝致使。
解決方案:重啓手機,再試一下。
3. 微信分享接口,能夠在本身的網頁上面自定義一個按鈕,當用戶點擊的時候完成分享。
問題:我最開始也是這樣想的,後來發現,原來不是這樣的,只有當你用微信客戶端打開,在最上面右邊的 「分享到朋友圈」按鈕按的時候效果纔會出來。
4. 微信圖像接口 permission denied
首先查看微信給出的錯誤說明:該公衆號沒有權限使用這個JSAPI(部分接口須要認證以後才能使用)。
說明:只要經過了公衆號認證,都不會有問題。
檢查對象:若是出現這個說明程序上基本上不會有問題微信後臺已經返回了數據。
第1、要檢查 你的config 文件中相應的 jsapilist 是否包含了該接口算法

wx.config({
      debug: false,
      appId: 'wxf8b4f85f3a794e77',
      timestamp: 1431058506,
      nonceStr: 'iXifhx7UzDl5oh32',
      signature: 'b634291d393a2df268b1654810d68f4f8459e682',
      jsApiList: [
        'checkJsApi',
        'onMenuShareTimeline',
        'onMenuShareAppMessage',
        'onMenuShareQQ',
        'onMenuShareWeibo',
        'hideMenuItems',
        'showMenuItems',
        'hideAllNonBaseMenuItem',
        'showAllNonBaseMenuItem',
        'translateVoice',
        'startRecord',
        'stopRecord',
        'onRecordEnd',
        'playVoice',
        'pauseVoice',
        'stopVoice',
        'uploadVoice',
        'downloadVoice',
        'chooseImage',
        'previewImage',
        'uploadImage',
        'downloadImage',
        'getNetworkType',
        'openLocation',
        'getLocation',
        'hideOptionMenu',
        'showOptionMenu',
        'closeWindow',
        'scanQRCode',
        'chooseWXPay',
        'openProductSpecificView',
        'addCard',
        'chooseCard',
        'openCard'
      ]
  });
相關文章
相關標籤/搜索