本文我们在调用企业微信的API时使用的是WECOM-JSSDK这也是企业微信开发者文档推荐的调用方法。相对于原版的JS-SDK我们可以直接以装包的形式进行引入了。
一、引入方式
- 通过npm引入
npm install @wecom/jssdk
安装完成后即可在应用中使用 SDK:
import * as ww from '@wecom/jssdk'
- 通过script标签引入(不推荐)
<script src="https://wwcdn.weixin.qq.com/node/open/js/wecom-jssdk-2.0.2.js"></script>
通过上述引用方式我们均可以调用ww方法,但是现在我们并不能调用企微提供的接口,因为我们首先需要注册当前页面的信息。
二、JS接口鉴权
JS接口权限有两类:企业身份与权限和应用身份与权限,我们可以根据要求注册对应的权限。
企业身份与权限
ww.register({
corpId: 'ww7ca4776b2a70000', // 必填,当前用户企业所属企业ID
jsApiList: ['getExternalContact'], // 必填,需要使用的JSAPI列表
getConfigSignature // 必填,根据url生成企业签名的回调函数
})
async function getConfigSignature(url) {
// 根据 url 生成企业签名
// 生成方法参考 https://developer.work.weixin.qq.com/document/14924
return { timestamp, nonceStr, signature }
}
应用身份与权限
ww.register({
corpId: 'ww7ca4776b2a70000', // 必填,当前用户企业所属企业ID
agentId: 1000247, // 必填,当前应用的AgentID
jsApiList: ['getExternalContact'], // 必填,需要使用的JSAPI列表
getConfigSignature, // 必填,根据url生成企业签名的回调函数
getAgentConfigSignature // 必填,根据url生成应用签名的回调函数
})
async function getConfigSignature(url) {
// 根据 url 生成企业签名
// 生成方法参考 https://developer.work.weixin.qq.com/document/14924
return { timestamp, nonceStr, signature }
}
async function getAgentConfigSignature(url) {
// 根据 url 生成应用签名,生成方法同上,但需要使用应用的 jsapi_ticket
return { timestamp, nonceStr, signature }
}
应用身份的注册在原有企业身份信息的基础上,需要提供额外的身份信息。
生成签名这一步尽量放在服务端进行,前端只进行权限注册逻辑,以确保应用的安全性。同时在注册时也要一并传入需要使用的JSAPI列表,只有注册过的API才能正常使用。具体实现代码如下所示: