企业微信移动端项目调用扫码定位功能实现,获取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("版本过低请升级");
              }
            },
          });
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐