微信invalid signature問題排查(nonceStr問題)


  1. 確保你可以正確獲取到access token,和js ticket,主要是域名白名單里面要把自己的服務器ip配進去

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

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

鑒於我是掉進這個坑里的,還不止一次,就主要說說這個問題吧。經過上面的邏輯之后,我們的簽名api返回了如下結果到頁面:

  ctx.body = {
    noncestr: 'Wm3WZYTPz0wzccnW',
    timestamp: '1414587457',
    signature: hash,
    appId: 'wxe06bdf429f29043'
  }

接下來我們請求到了結果--data,在頁面里調用wx.config時:

    // 通過api拿到上面的data
      wx.config({
        ...data,
        jsApiList: ['chooseImage', 'scanQRCode']
      })

一個擴展運算符,是不是非常的方便?現在敲黑板💣了,這里我們在server端計算sha1的時候,用的是noncestr這個字段,所以很自然的以noncestr為字段名返回了,但是:

在頁面調用wx.config里面,接收的是nonceStr啊,S是大寫啊同學們!!!。在上面栗子中,使用展開運算符得到的結果如下:

      wx.config({
         noncestr: 'Wm3WZYTPz0wzccnW', //這里錯了,應該是nonceStr:'Wm3WZYTPz0wzccnW'
         timestamp: '1414587457',
        signature: hash,
        appId: 'wxe06bdf429f29043'
        jsApiList: ['chooseImage', 'scanQRCode']
      })

解決辦法有兩種,前端改或者后端改返回字段名,最終調用wx.config時傳入的要是nonceStr!!

害,能用雲開發還是用雲開發吧。。https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/web.html

參考: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM