引入企业微信jssdk
今天写这篇文章,主要是面向工作中在企业微信里引入jssdk的人。其实企业微信jssdk和微信公众号的jssdk是差不多的,但这里面有很多需要注意的地方,也可以让大家少走很多弯路。
调用普通接口:引入jweixin-module包,导入jweixin-module,进行config配置,使用。
调用需要agentConfig的接口:引入jweixin-module包,引入jwxwork sdk,进行config配置,进行agentConfig配置,使用。这里注意的是从企业微信3.0.24及以后版本(可通过企业微信UA判断版本号),无须先调用wx.config,可直接wx.agentConfig.这里UA可以尝试看看,如果不太想弄的话就先调用config就行。
1.jssdk包这里我推荐微信公众号和企业微信可以一起使用的包`jweixin-module`,亲测有效!
npm install jweixin-module --save
2.配置jssdk这里配置时注意jsApiList里要填对应的接口
initWxWorkJssdk: function(callback) { // jssdk配置 Vue.prototype.$api.yzhshopAdmin.commonA1 .jssdkConfig({ sign_url: window.location.href.split("#")[0], type: 1, shop_id: uni.getStorageSync("UserInfoData").shop_id || {}, }) .then((res) => { if (res.code === 200) { jweixin.config({ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: res.data.appId, // 必填,企业微信的corpID timestamp: res.data.timestamp, // 必填,生成签名的时间戳 nonceStr: res.data.nonceStr, // 必填,生成签名的随机串 signature: res.data.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法 jsApiList: [ "onMenuShareAppMessage", "updateAppMessageShareData", "selectExternalContact", "launchMiniprogram", "openUserProfile", "shareAppMessage", "onMenuShareAppMessage", "onMenuShareWechat", "shareWechatMessage", "scanQRCode", "openEnterpriseChat" ] }); // 配置完成,再执行分享等功能 if (callback) { callback(res.data); } } }) .catch((err) => {}); },
3.使用对应方法接口
scanQRCode: function(shop_id) { uni.showLoading({ title: '正在加载' }); console.log('更新了222', jweixin) this.initWxWorkJssdk(function() { jweixin.ready(function() { jweixin.scanQRCode({}); }); }); }
4.引入jwxwork sdk
这里的jwxwork sdk我建议先用官方的https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js
实在不行就这个包https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js
或者有更好的npm包的朋友可以提供一下,官方的包好像没有agentConfig。第二个包是社区提供的。
首先需要先成功调用上面的config接口,然后在wx.ready里继续调用agentConfig
this.initWxWorkJssdk(function() { jweixin.ready(function() { Vue.prototype.$api.yzhshopAdmin.commonA1 .jssdkConfig({ sign_url: window.location.href.split("#")[0], type: 2, }) .then((res) => { if (res.code === 200) { wx.agentConfig({ debug: true, corpid: res.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: res.data.agentid, // 必填,企业微信的应用id (e.g. 1000247) timestamp: res.data.timestamp, // 必填,生成签名的时间戳 nonceStr: res.data.nonceStr, // 必填,生成签名的随机串 signature: res.data.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: [ "scanQRCode" ], //必填 success: function(res) { console.log(res, 'res') wx.scanQRCode({ desc: 'scanQRCode desc', needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 success: function(res) { // 回调 console.log(res, 'res') }, error: function(res) { console.log(res, 'res') if (res.errMsg.indexOf('function_not_exist') > 0) { alert('版本过低请升级') } } }); }, fail: function(res) { console.log(res); uni.showToast({ title: res, duration: 2000, }); if (res.errMsg.indexOf("function not exist") > -1) { alert("版本过低请升级"); } }, }); } }) .catch((err) => {}); }); }, shop_id);
最后注意事项
如果你用的是普通的jssdk接口,就只用引入jweixin-module这个包即可了,重点观察接口下方有没有提示需要使用agentConfig
而真的需要使用agentConfig接口的小伙伴,首先需要尝试使用官方提供的jssdk,如果不行,导入文章中的第二包,最后不行联系客服,整个过程参考官方的demo来做 <br/>
最后如果调用成功了,要同时测试安卓和苹果。有任何问题也可以再下方留言,我看到会给你回复。感谢你看到最后,谢谢!
参考链接
企业微信jssdkdemo(官方) http://open.work.weixin.qq.com/api/jsapidemo
企业微信文档 https://work.weixin.qq.com/api/doc/90000/90136/90512
企业微信巨坑:wx.agentConfig is not a function https://developers.weixin.qq.com/community/develop/article/doc/00022417118c78d4448af86625b413
企业微信客服二维码