vue.js中使用微信掃一掃解決invalid signature問題(完美解決)
1、點擊按鈕,實現(xiàn)微信掃一掃功能:
<template> <a @click='scan'>掃一掃</a></template>
2、使用config接口注入配置信息,wx.config調(diào)用方法如下:
(其中appId,timestamp,nonceStr,signature必須從后臺獲取,傳參當(dāng)前網(wǎng)頁的URL,不包含#及其后面部分,location.href.split(’#’)[0]獲取)
wx.config({ debug: true, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。 appId: ’’, // 必填,公眾號的唯一標(biāo)識 timestamp: , // 必填,生成簽名的時間戳,精確到秒 nonceStr: ’’, // 必填,生成簽名的隨機串 signature: ’’,// 必填,簽名 jsApiList: [] // 必填,需要使用的JS接口列表,例如:[’chooseImage’,’previewImage’,’uploadImage’]})
3、通過ready接口處理成功驗證
wx.ready(function(){ // config信息驗證后會執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后, config是一個客戶端的異步操作,所以如果需要在頁面加載時就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行。對于用戶觸發(fā)時才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。});
4、完整代碼如下:
export default {data() {return {}},methods: {init(){let url = location.href.split(’#’)[0];//這里的參數(shù)fullUrl是當(dāng)前頁面的完整url(除去#后面部分)this.$axios.get('/api/wx/jsdk/config',{params:{url:url}}).then(res => {if(res.success){window.wx.config({ debug: false, appId: res.data.appId, // 必填,公眾號的唯一標(biāo)識 timestamp: res.data.timeSpan, // 必填,生成簽名的時間戳 nonceStr: res.data.nonceStr, // 必填,生成簽名的隨機串 signature: res.data.sinature, // 必填,簽名 jsApiList: [’checkJsApi’, ’scanQRCode’] // 必填,需要使用的JS接口列表})}else{alert(res.msg);}})},scan(){window.wx.ready(function() {wx.checkJsApi({ jsApiList : [’scanQRCode’], success : function(res) {if (res.checkResult.scanQRCode === true) { wx.scanQRCode({ // 微信掃一掃接口 needResult: 1, // 默認(rèn)為0,掃描結(jié)果由微信處理,1則直接返回掃描結(jié)果, scanType: [’qrCode’, ’barCode’], // 可以指定掃二維碼還是一維碼,默認(rèn)二者都有 success: function (res) {let result = res.resultStr // 當(dāng)needResult 為 1 時,掃碼返回的結(jié)果window.location.href = result;//此處掃碼結(jié)果直接跳轉(zhuǎn)鏈接 } })} else { alert(’抱歉,當(dāng)前客戶端版本不支持掃一掃’)} }, fail: function (res) { // 檢測getNetworkType該功能失敗時處理 alert(’fail’ + res) }});});window.wx.error(function(res) {alert('出錯了:' + res.errMsg);//這個地方的好處就是wx.config配置錯誤,會彈出窗口哪里錯誤,然后根據(jù)微信文檔查詢即可。});}},mounted() {this.init();}}
總結(jié)
到此這篇關(guān)于vue.js中使用微信掃一掃解決invalid signature問題(推薦)的文章就介紹到這了,更多相關(guān)vue.js 微信掃一掃內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章: