# @wecom/jssdk
微信(企业微信)JSSDK,可用于替代 jweixin.js。
## 主要特性
1. 自动调用 config、agentConfig
2. API promise 化
3. 提供 ts 定义
4. 通过 npm 发布
## 使用方法
通过 npm 引入:
```js
import * as ww from '@wecom/jssdk'
// 注册应用信息
ww.register({
corpId: 'ww7ca4776b2a70000',
jsApiList: [
'selectExternalContact',
],
async getConfigSignature(url) {
// 根据 url 生成 config 签名信息(需要开发者自行实现)
// 返回 { timestamp, nonceStr, signature }
return getJsApiSignature(url)
}
})
// 可以立刻调用JS接口,无需等待ready回调
ww.selectExternalContact({
success(res) {
console.log(res.userIds[0])
}
})
```
通过 script 标签引入:
```html
```
## API
常规接口可参考以下文档:
- [企业微信 JS-SDK 文档](https://developer.work.weixin.qq.com/document/path/98560)
- [微信 JS-SDK 说明文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html)
所有命令接口均已 promise 化,具体用法请参考 ts 定义。
### ww.register(options)
- __参数:__
- `{Object} options` 注册参数
- __说明:__
注册应用信息,在调用其他JS接口前必须先调用该接口。
在注册应用信息后,SDK会在需要的时候自动调用 `wx.config`,此时SDK会通过 `getConfigSignature` 等回调函数获取签名信息。
- __options 结构:__
属性 | 类型 | 默认值 | 必填 | 说明
--- | --- | --- | --- | ---
corpId | string | | 是 | 当前用户所属企业ID(或公众号的 appId)
agentId | number / string | | 否 | 企业微信第三方应用的AgentID
jsApiList | Array<string> | [ "config" ] | 否 | 需要使用的JS接口列表
getConfigSignature | Function | | 否 | config 签名生成函数,详见后续说明
getAgentConfigSignature | Function | | 否 | agentConfig 签名生成函数,详见后续说明
openTagList | Array<string> | | 否 | 需要使用的开放标签列表,例如 [ "wx-open-launch-app" ]
onConfigSuccess | Function | | 否 | config 成功回调
onConfigFail | Function | | 否 | config 失败回调
onConfigComplete | Function | | 否 | config 完成回调
onAgentConfigSuccess | Function | | 否 | agentConfig 成功回调
onAgentConfigFail | Function | | 否 | agentConfig 失败回调
onAgentConfigComplete | Function | | 否 | agentConfig 完成回调
- __getConfigSignature、getAgentConfigSignature 返回结构:__
属性 | 类型 | 必填 | 说明
--- | --- | --- | ---
timestamp | number / string | 是 | 生成签名的时间戳
nonceStr | string | 是 | 生成签名的随机串
signature | string | 是 | 签名,生成方法见 [JS-SDK使用权限签名算法](https://open.work.weixin.qq.com/api/doc/90000/90136/90506)
- __示例代码:__
```js
ww.register({
corpId: 'ww7ca4776b2a70000',
jsApiList: ['selectExternalContact'],
async getConfigSignature(url) {
/**
* 根据 url 生成 config 签名
*/
return { timestamp, nonceStr, signature }
}
})
```
- __注意:__
- 企业自建应用只需要提供 `getConfigSignature`
- 对第三方应用:
- 在企业微信 3.0.24 及以后版本中,只需要提供 `getAgentConfigSignature`
- 在其他环境下,必须同时提供 `getConfigSignature` 和 `getAgentConfigSignature`
- 签名函数在页面URL发生变更后需要重新调用,对使用哈希路由的单页应用,签名函数只会被调用一次
### ww.initOpenData([options])
__注意:使用通讯录组件前仍需在页面上引入 https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js__
- __参数:__
- `{Object} [options]` 通用回调参数
- __返回值:__ `Promise