第一个坑就是权限验证。官方说明见:使用说明 - 企业微信API
企业微信的js文件非常迷,我找到的就有不同版本(3个)和npm包(2个)选择。但事实是,没有任何官方说明不同版本之间的关系。js文件不对,最常报的错就是XX is not a function... 相关版本链接如下:
- http://res.wx.qq/open/js/jweixin-1.2.0.js
- https://res.wx.qq/wwopen/js/jsapi/jweixin-1.0.0.js
- https://open.work.weixin.qq/wwopen/js/jwxwork-1.0.0.js
- wxwork-js-sdk - npm
- https://npm.io/package/wxwork-jsapi
我其实也没有彻底把这个问题解决,这里只提供下我的思路。这篇文章企业微信 JS-SDK 自建应用踩坑指南 - 简书 给了很多启发。
1. 权限认证的两个接口:config和agentconfig
不同认证下能调用的api是有差别的。在每个接口的说明文档中会写需要哪种认证,比如openUserProfile要求调用agentconfig:
而不同js版本对agentconfig支持不一样,官方建议的版本是jwxwork-1.0.0.js。参考上面链接的那篇文章,直接用jweixin-1.0.0.js可以同时支持两个接口。
2. config和agentconfig的区别
官方文档说:config注入的是企业的身份与权限,而agentConfig注入的是应用的身份与权限。
我个人的理解(不一定对),config对应的接口大部分调用方式是wx.func_name(...),而agentConfig是wx.invoke("func_name", ...)(不是绝对的)。简单来说,config管的是通用类的交互行为以及交互行为的监听回调,比如选择一张照片、扫二维码、打开菜单等;agentConfig管的是场景相关、需要去微信后台拿的数据,比如应用进入的入口、当前聊天对象的usrid等。
所以,大概率两个接口都是需要的。官方文档中提到,从3.0.24版本之后调用agentConfig前不需要成功调用config(我选择了都调)。
3. npm包
两个npm包都不是官方出的,且很久没有更新,不推荐。
4. js引入
官方推荐用cdn引入js文件。在PC客户端和微信开发工具中没有问题。但是在浏览器里就死活不行,一直报not a function的错误,设置UA模拟微信浏览器也不行。我的应用基于uniapp,有人说它内置了一个wx对象,产生了冲突。并没有找到彻底解决办法。
目前有效到折衷处理是把js下载到本地,修改文件中第一个this为window,用require方式引入就可以正常使用了。
var wx = require("./static/js/jweixin-1.0.0.js")
wx.config(...)
wx.agentconfig(...)
更多推荐
企业微信网页应用开发 - 权限验证
发布评论