微信 jssdk 簽名錯誤invalid signature 問題


一、官方概述

微信JS-SDK是微信公眾平台 面向網頁開發者提供的基於微信內的網頁開發工具包。

借助微信實現的功能有一下兩種

  • 手機系統的能力:拍照、選圖、語音、位置等;
  • 微信特有的能力:微信分享、掃一掃、卡券、支付等;

 

二、使用方法

一般簽名算法是后端來操作的,前端主要是使用后端提供的接口、傳參(我們項目---主要是傳需要使用微信某方法所在頁面的URL即可),獲取簽名等,通過config接口注入權限驗證配置,詳情請查看:官網

wx.config({ appId: '', // 必填,公眾號的唯一標識;接口取得
  timestamp: , // 必填,生成簽名的時間戳;接口取得
  nonceStr: '', // 必填,生成簽名的隨機串;接口取得
  signature: '',// 必填,簽名;接口取得
  jsApiList: [] // 必填,需要使用的JS接口列表;按需自取
});

 

三、簽名錯誤invalid signature 問題

開始出現這個問題很摸不到頭腦,隨着不斷的深入的了解才發現產生的原因。

微信要求:如果我們需要在頁面中調用微信的某個方法,則必須用這個頁面的URL地址獲取簽名。

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

例如:你的URL地址是這樣:https://www.abc.com/abc.html?abc=def#xyz,那么你用於計算簽名的URL地址不能是https://www.abc.com/abc.html,也不能https://www.abc.com/abc.html?abc=def#xyz,而必須只能是https://www.abc.com/abc.html?abc=def

 

四、ios與安卓的坑

如果發現URL獲取完整但是依舊會報錯,就要注意了!!!!

微信內嵌瀏覽器在iOS和安卓下的表現不一樣。安卓系統你可以使用當前使用微信方法頁面的URL但在iOS下,微信需要你傳遞的是入口URL,而不是當前頁面的URL

就那我遇到的問題解釋吧

首先進入的是登陸頁面:http://www.test.com/h5login,然后登陸成功后跳轉到http://www.test.com/h5Info 頁面(此頁面調用微信方法),在安卓系統下用的是http://www.test.com/h5Info,但在ios下用的是http://www.test.com/h5login,所以此時你在用http://www.test.com/h5Info計算簽名就會報錯。

所以根據自己的實際情況區分一下即可。

 

(完)


免責聲明!

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



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