第一个坑就是权限验证。官方说明见:使用说明 - 企业微信API

企业微信的js文件非常迷,我找到的就有不同版本(3个)和npm包(2个)选择。但事实是,没有任何官方说明不同版本之间的关系。js文件不对,最常报的错就是XX is not a function... 相关版本链接如下:

我其实也没有彻底把这个问题解决,这里只提供下我的思路。这篇文章企业微信 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(...)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐