vue.js中使用微信掃一掃解決invalid signature問(wèn)題(完美解決)
1、點(diǎn)擊按鈕,實(shí)現(xiàn)微信掃一掃功能:
<template> <a class="btn" @click="scan">掃一掃</a> </template>
2、使用config接口注入配置信息,wx.config調(diào)用方法如下:
(其中appId,timestamp,nonceStr,signature必須從后臺(tái)獲取,傳參當(dāng)前網(wǎng)頁(yè)的URL,不包含#及其后面部分,location.href.split('#')[0]獲?。?/p>
wx.config({
debug: true, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。
appId: '', // 必填,公眾號(hào)的唯一標(biāo)識(shí)
timestamp: , // 必填,生成簽名的時(shí)間戳,精確到秒
nonceStr: '', // 必填,生成簽名的隨機(jī)串
signature: '',// 必填,簽名
jsApiList: [] // 必填,需要使用的JS接口列表,例如:['chooseImage','previewImage','uploadImage']
})
3、通過(guò)ready接口處理成功驗(yàn)證
wx.ready(function(){
// config信息驗(yàn)證后會(huì)執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,
config是一個(gè)客戶端的異步操作,所以如果需要在頁(yè)面加載時(shí)就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來(lái)確保正確執(zhí)行。對(duì)于用戶觸發(fā)時(shí)才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
});
4、完整代碼如下:
export default {
data() {
return {
}
},
methods: {
init(){
let url = location.href.split('#')[0];//這里的參數(shù)fullUrl是當(dāng)前頁(yè)面的完整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, // 必填,公眾號(hào)的唯一標(biāo)識(shí)
timestamp: res.data.timeSpan, // 必填,生成簽名的時(shí)間戳
nonceStr: res.data.nonceStr, // 必填,生成簽名的隨機(jī)串
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 時(shí),掃碼返回的結(jié)果
window.location.href = result;//此處掃碼結(jié)果直接跳轉(zhuǎn)鏈接
}
})
} else {
alert('抱歉,當(dāng)前客戶端版本不支持掃一掃')
}
},
fail: function (res) { // 檢測(cè)getNetworkType該功能失敗時(shí)處理
alert('fail' + res)
}
});
});
window.wx.error(function(res) {
alert("出錯(cuò)了:" + res.errMsg);//這個(gè)地方的好處就是wx.config配置錯(cuò)誤,會(huì)彈出窗口哪里錯(cuò)誤,然后根據(jù)微信文檔查詢即可。
});
}
},
mounted() {
this.init();
}
}
總結(jié)
到此這篇關(guān)于vue.js中使用微信掃一掃解決invalid signature問(wèn)題(推薦)的文章就介紹到這了,更多相關(guān)vue.js 微信掃一掃內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue封裝localStorage設(shè)置過(guò)期時(shí)間的示例詳解
這篇文章主要介紹了Vue封裝localStorage設(shè)置過(guò)期時(shí)間的相關(guān)資料,在這個(gè)示例中,我們?cè)贛yComponent.vue組件的setup函數(shù)中導(dǎo)入了setItemWithExpiry和getItemWithExpiry函數(shù),并在函數(shù)內(nèi)部使用它們來(lái)設(shè)置和獲取帶有過(guò)期時(shí)間的localStorage數(shù)據(jù),需要的朋友可以參考下2024-06-06
vue項(xiàng)目打包后上傳至GitHub并實(shí)現(xiàn)github-pages的預(yù)覽
這篇文章主要介紹了vue項(xiàng)目打包后上傳至GitHub并實(shí)現(xiàn)github-pages的預(yù)覽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
vue按住shift鍵多選方式(以element框架的table為例)
這篇文章主要介紹了vue按住shift鍵多選方式(以element框架的table為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue登錄注冊(cè)及token驗(yàn)證實(shí)現(xiàn)代碼
在vue單頁(yè)中,我們可以通過(guò)監(jiān)控route對(duì)象,從中匹配信息去決定是否驗(yàn)證token,然后定義后續(xù)行為。下面通過(guò)實(shí)例代碼給大家分享vue登錄注冊(cè)及token驗(yàn)證功能,需要的朋友參考下吧2017-12-12
SpringBoot+Vue3實(shí)現(xiàn)上傳文件功能
這篇文章主要介紹了SpringBoot+Vue3實(shí)現(xiàn)上傳文件功能,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01

