企业微信和微信公众号获取wx.config的安卓和ios的区别----踩坑
配置wx.config流程:
微信公众号中获取签名需要访问的前端的页面的uri给服务器端获取,服务端获取公众号唯一标识、签名时间戳、签名等信息
代码如下:
1 let url = '' 2 var ua= window.navigator.userAgent.toLowerCase(); 3 //企业微信客户端 4 if( (ua.match(/MicroMessenger/i) == 'micromessenger') && (ua.match(/wxwork/i) == 'wxwork') ){ 5 //企业微信不管是安卓和ios都获取每个页面的url 6 url = window.location.href.split("#")[0] 7 //微信客户端 8 }else if( ua.match(/micromessenger/i) == 'micromessenger' ){ 9 //1,如果是安卓获取每个页面的url ,2,如果是ios则获取第一次进入应用的页面 10 url = /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : window.localStorage.getItem('scanUrl'); 11 } 12 this.$http.getWXconfigInfo({url:url}).then( res => { 13 wx.config({ 14 beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题 15 debug: false, 16 appId: res.appid, // 必填,公众号的唯一标识 17 timestamp: res.timestamp, // 必填,生成签名的时间戳 18 nonceStr: res.noncestr, // 必填,生成签名的随机串 19 signature: res.signature, // 必填,签名 20 jsApiList: [ 21 "scanQRCode", 22 "checkJsApi", 23 "chooseImage", 24 "getLocation", 25 "uploadImage", 26 "hideAllNonBaseMenuItem", 27 "translateVoice", 28 'startRecord', 29 'stopRecord', 30 'onVoiceRecordEnd', 31 'playVoice', 32 'pauseVoice', 33 'stopVoice', 34 'onVoicePlayEnd', 35 'uploadVoice', 36 'downloadVoice' 37 ] //获取权限的列表 38 }); 39 wx.error(function(res) { 40 //会弹出窗口哪里错误,然后根据微信文档查询即可。 41 //alert("出错了:" + JSON.stringify(res)); 42 }); 43 })
在代码第10行的最后获取缓存的url从App.vue文件中获取,记录第一次进入应用的url
将这个代码写在初始化进入页面的方法中,vue的话写在 create 或者 mounted 中
window.localStorage.setItem('scanUrl',location.href.split('#')[0])