vue项目调用企业微信扫码权限skd,js-sdk
企业微信移动端项目调用扫码定位功能实现,获取code采用vue来搭建本项目,如果需要调用企业微信js-sdk就需要给登录接口传code,code在index.html获取function getUrlParam(name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对
·
企业微信移动端项目调用扫码定位功能实现,获取code采用vue来搭建本项目,如果需要调用企业微信js-sdk就需要给登录接口传code,code在index.html获取
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
window.localStorage.setItem('code', unescape(r[2]))
if (r != null) return unescape(r[2]);
return null; //返回参数值
}
getUrlParam('code')
获取完code后就要调用登录接口,把获取的code传进去后台会返回当前用户信息和token,存起来就好了
let code = window.localStorage.getItem("code");
singleSignOn({ code })
在登录接口返回值里需要注册企业微信sdk权限,也就是我们需要调用的api
getSdk({
token: token, //用户信息token
url: location.href.split("#")[0], //调用sdk需要当前url后面的路由字段
}).then((res) => {
wx.config({
beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: res.appId, // 必填,企业微信的corpID
timestamp: res.timestamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature, // 必填,签名,见附录1
jsApiList: [
"checkJsApi",
"startRecord",
"stopRecord",
"playVoice",
"pauseVoice",
"stopVoice",
"chooseImage",
"translateVoice",
"uploadVoice",
"invoke",
"getLocation",
"openLocation",
],
});
wx.ready(() => {
wx.checkJsApi({
jsApiList: [
"checkJsApi",
"startRecord",
"stopRecord",
"playVoice",
"pauseVoice",
"stopVoice",
"chooseImage",
"translateVoice",
"uploadVoice",
"invoke",
"getLocation",
"openLocation",
], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function (res) {
//alert("支持权限检查:"+JSON.stringify(res));
},
});
});
wx.error(function (res) {
console.log(res,'invokeres')
Notify({ type: "warning", message:'获取微信权限失败,请重新登陆' });
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
});
接下来就可以实现一个扫码功能
wx.scanQRCode({
desc: "scanQRCode desc",
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: (res) => {
let resultStr = res.resultStr.split("=")[1] //根据不同业务和扫码的本身信息处理,我们扫码是个网站所以需要截取,普通的只需要取res.resultStr就可以
//扫码后的后续动作
},
error: (res) => {
if (res.errMsg.indexOf("function_not_exist") > 0) {
alert("版本过低请升级");
}
},
});
更多推荐
已为社区贡献2条内容
所有评论(0)