準備工作:
1踢械、申請微信公眾號
可以使用微信測試的公眾號:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
2、配置JS接口安全域名(正式賬號還要設置IP訪問白名單等)
3怨酝、得到appID和appsecret
4惊奇、關注公眾號扔傅,綁定開發(fā)者
步驟如下:
1惠险、獲取access_token (服務端實現(xiàn))
2唆貌、獲取api_ticket(服務端實現(xiàn))
3、使用url粟耻,timestamp查近,nonceStr生成signature,(前后端一起配合使用)
4挤忙、wx.config認證獲取JsApi調(diào)用權限
vue安裝weixin-js-sdk
npm install weixin-js-sdk --save
工具類代碼示例如下:
import wx from 'weixin-js-sdk';
import * as service from '../services';
export const configScanQRCode = (jsApiList) => {
let appId = 'XXXXXXXXX';
let secret = 'xxxxxxxxxxxxxxxxx';
let url = encodeURI(window.location.href.split('#')[0]);
let param = {
appId: appId,
appSecret: secret,
url: url
}
//服務請求
service.weiJsApiIdentify(param).then(res => {
console.log(res);
if (res) {
wx.config({
debug: false,
appId: appId, // 必填霜威,公眾號的唯一標識
timestamp: res.timestamp, // 必填,生成簽名的時間戳
nonceStr: res.noncestr, // 必填册烈,生成簽名的隨機串
signature: res.sign, // 必填戈泼,簽名婿禽,見附錄1
jsApiList: jsApiList // 必填,需要使用的JS接口列表大猛,所有JS接口列表見附錄2
});
}
});
}
注意:url要使用encodeURI 編碼下扭倾,不然IOS會報錯,認為簽名認證失敗或者the permission value is offline verifying
the permission value is 這個錯誤是因為config沒有正確執(zhí)行挽绩,或者是調(diào)用的JSAPI沒有傳入config的jsApiList參數(shù)中
官方說法:
確保你獲取用來簽名的url是動態(tài)獲取的膛壹,動態(tài)頁面可參見實例代碼中php的實現(xiàn)方式。如果是html的靜態(tài)頁面在前端通過ajax將url傳到后臺簽名唉堪,前端需要用js獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent)模聋,因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數(shù)唠亚,如果不是動態(tài)獲取當前鏈接链方,將導致分享后的頁面簽名失敗。
vue在頁面調(diào)用
created() {
configScanQRCode(['scanQRCode']);}
},
例如調(diào)用掃一掃功能
wx.ready(function () {
wx.checkJsApi({
jsApiList: [
'scanQRCode'
],
success: function (res) {
if (res.checkResult.scanQRCode === true) {
wx.scanQRCode({
needResult: 1, // 默認為0灶搜,掃描結果由微信處理祟蚀,1則直接返回掃描結果,
scanType: ["qrCode"], // 可以指定掃二維碼還是一維碼占调,默認二者都有
success: function (res) {
var result = res.resultStr; // 當needResult 為 1 時暂题,掃碼返回的結果
},
error: function (res) {
console.log( '掃描碼失敗,請重試');
}
});
} else {
console.log( '抱歉究珊,當前客戶端版本不支持掃一掃');
}
},
fail: function (res) {
console.log(’失敗‘)
}
})
});
注:盡量在公眾號中訪問頁面否則可能報一些權限類的錯誤
謝謝支持薪者!