企业微信和微信公众号获取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])

 

posted @ 2021-10-20 16:13  江郎才尽吕小布  阅读(919)  评论(0编辑  收藏  举报