9***@qq.com
9***@qq.com
  • 发布:2021-08-24 11:41
  • 更新:2022-01-21 18:04
  • 阅读:2882

关于uni-app,使用企业微信的经验小谈。

分类:uni-app

wx.config wx.agentConfig undefined 的问提。

原因: 是uni-app自身在window下面挂载了wx的全局变量。导致微信引入的二个js,wx异常。
解决办法: 在App.vue 中,onLaunch 加载方法中,动态引入这二个js。这个方法只支持 h5 开发

 onLaunch: function () {  
    let that = this;  
    const script1 = document.createElement("script");  
    script1.setAttribute("type", "text/javascript");  
    script1.setAttribute("referrerpolicy", "origin");  
    script1.setAttribute("src", "https://res.wx.qq.com/open/js/jweixin-1.2.0.js");  
    document.head.appendChild(script1);  

    script1.onload = function () {  
      const script2 = document.createElement("script");  
      script2.setAttribute("type", "text/javascript");  
      script2.setAttribute("referrerpolicy", "origin");  
      script2.setAttribute("src", "https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js");  
      document.head.appendChild(script2);  
      script2.onload = () => {  
       // 执行wx.config的逻辑  
      };  
    };  
}

wx.config 方法 和 wx.agentConfig 方法如何使用

因为我自己在这一步上面卡了很久,所以把自己现在写的分享出来

// 这个api其实是我的接口地址,www.xxxx.com/api/  
import { api } from "./request.api";  
let obj = {  
  async registered() {  
    let token = uni.getStorageSync("token");  
    let data = await new Promise((res) => {  
      uni.request({  
        url: api + "work/GetOPenTenantDataConfig",  
        method: "get",  
        data: {  
          auth_token: token  
        },  
        success: ({ data }) => {  
          res(data.result);  
        }  
      });  
    });  
    wx.config({  
      beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题  
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  
      appId: data.corpid, // 必填,企业微信的corpID  
      timestamp: data.timeStamp, // 必填,生成签名的时间戳  
      nonceStr: data.noncestr, // 必填,生成签名的随机串  
      signature: data.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法  
      jsApiList: [] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来  
    });  
    wx.ready(() => {  
      obj.agentConfig(token);  
    });  
    wx.error(function (res) {  
      console.log(res);  
    });  
  },  
  async agentConfig(token) {  
    let data = await new Promise((res) => {  
      uni.request({  
        url: api + "work/GetOPenAgentDataConfig",  
        method: "get",  
        data: {  
          auth_token: token  
        },  
        success: ({ data }) => {  
          res(data.result);  
        }  
      });  
    });  
    wx.agentConfig({  
      corpid: data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致  
      agentid: data.agentid, // 必填,企业微信的应用id (e.g. 1000247)  
      timestamp: data.timeStamp, // 必填,生成签名的时间戳  
      nonceStr: data.noncestr, // 必填,生成签名的随机串  
      signature: data.signature, // 必填,签名,见附录1  
      jsApiList: [],  
      success: (res) => {  
        console.log(res);  
      },  
      fail: (error) => {  
        console.log(error);  
      }  
    });  
  }  
};  
module.exports = obj;  

user组件 我的需求是只需要显示名称就好了。

<template>  
  <ww-open-data type="userName" :openid="openid" />  
</template>  
<script>  
export default {  
  props: ["openid"], // 特别提醒 这里的openid 其实就是用户的userid。后台以为需要userid转成openid。导致在这个小问题上,调试了很久。  
  mounted() {  
    WWOpenData.bind(document.querySelectorAll("ww-open-data"));  
  }  
};  
</script>  
1 关注 分享
2***@qq.com

要回复文章请先登录注册

易软

易软

在吗?按你这个方式我改了下载每次调用方法的时候都差一次并调用,在安卓没问题,但是在ios调用不起,获取地址没问题但是进入页面需要刷新一次才行,点击扫码不起作用,更不说使用angConfig了
2022-01-21 18:04
易软

易软

回复 1***@qq.com :
解决了吗?我是在ios 端出现这个问题
2022-01-21 17:37
易软

易软

请问 ios调用wx.chooseImage 是否是返回的企业微信要求的id呢,我现在卡在ios选图片返回的是地址,安卓是正确的
2021-12-20 15:33
1***@qq.com

1***@qq.com

请问一下,我首次进入的时候wx.config不会执行,必须要手动刷新一次才会执行是什么原因呢
2021-12-18 17:32
会飞的小白鼠

会飞的小白鼠

npm install wecomjsdk安装
2021-12-17 17:05
会飞的小白鼠

会飞的小白鼠

https://www.npmjs.com/package/wecomjsdk
2021-12-17 17:04
会飞的小白鼠

会飞的小白鼠

https://www.npmjs.com/package/wecomjsdk
2021-12-17 17:04
w***@126.com

w***@126.com

请问 使用 wx.qy.ogin ,hbuilder编译之后会报错,可以怎么解决,谢谢
2021-09-09 10:26