微信開發(fā)中阱缓,有很大部分場景涉及到識(shí)別用戶完成業(yè)務(wù)操作被辑。公眾號(hào)頁面本身提供的功能有限,很多業(yè)務(wù)場景需要引導(dǎo)用戶進(jìn)入網(wǎng)頁內(nèi)來實(shí)現(xiàn)。微信提供了JSSDK來使我們網(wǎng)頁能實(shí)現(xiàn)更強(qiáng)大的功能赁酝。這次記錄一下個(gè)人接入JSSDK開發(fā)的過程以及一些經(jīng)驗(yàn)。
使用步驟
1.參照官方使用指南旭等,第一步為綁定 JS安全接口域名酌呆。本人使用的是測試賬號(hào)開發(fā),ngrok服務(wù)映射本地目錄搔耕,有一個(gè)很重要的一點(diǎn)是域名需要填寫正確隙袁,不包括協(xié)議頭。(ngrok使用提供的外網(wǎng)域名弃榨,nodejs配置相關(guān)配置好之后建議重新設(shè)置一次)
2.第二步為引入JS文件菩收,因?yàn)楹灻枰诜?wù)端生成,我選擇在視圖模板中引入鲸睛。 http://res.wx.qq.com/open/js/jweixin-1.0.0.js
3.配置config
wx.config({
debug: true, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來娜饵,若要查看傳入的參數(shù),可以在pc端打開官辈,參數(shù)信息會(huì)通過log打出箱舞,僅在pc端時(shí)才會(huì)打印。
appId: '', // 必填拳亿,公眾號(hào)的唯一標(biāo)識(shí)
timestamp: , // 必填晴股,生成簽名的時(shí)間戳
nonceStr: '', // 必填,生成簽名的隨機(jī)串
signature: '',// 必填肺魁,簽名电湘,見附錄1
jsApiList: [] // 必填,需要使用的JS接口列表鹅经,所有JS接口列表見附錄2
});
簽名的生成官方提供了示例代碼 <a >這里下載</a>
官方的加密功能使用了 jssha 的包寂呛,如果不想額外安裝包可以使用 crypto 包來實(shí)現(xiàn)(因?yàn)槠渌胤郊用芤残枰玫?crypto)
crypto的用法類似這樣
let string = 'string' //需要加密的字符串,參照官方代碼排序即可
let shasum = crypto.createHash('sha1');
shasum.update(string)
return shasum.digest('hex')
簽名需要使用的 jsapi_ticket,和 access_token 類似瞬雹,需要緩存在服務(wù)器端昧谊,照著改一遍就好了愿卸。
這么總結(jié)起來好像也沒什么難點(diǎn)国夜,只是開發(fā)時(shí)碰到幾次報(bào) invalid signature錯(cuò),發(fā)現(xiàn)自己 ticket的方法都沒有寫好富蓄,最后檢驗(yàn)完簽名沒問題后報(bào) url domain 的錯(cuò)誤,嘗試本地地址和ngrok地址都無法解決尚镰,最后重新設(shè)置了一下JS安全域名(ngrok提供的地址)阀圾,就可以了。
完畢~