一、官方概述
微信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計算簽名就會報錯。
所以根據自己的實際情況區分一下即可。
(完)