评论

jwecom - 基于 ts 的企业微信 JS-SDK

jwecom 在能力上可以完全替代 jweixin,并在 jweixin 的基础上增加了自动 config、提供 ts 定义等特性

注意

该项目尚处于开发调试状态,不保证所有功能正常使用,use at your own risk

如在使用过程中发现了问题,欢迎在下面留言。

主要特性

jwecom 在能力上可以完全替代 jweixin.js,并在 jweixin 的基础上增加了以下特性:

  1. 自动调用 config、agentConfig
  2. API promise 化
  3. 提供 ts 定义
  4. 通过 npm 发布

使用方法

通过 npm 引入:

import * as ww from 'jwecom'

// 注册应用信息
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 标签引入:

<script src="https://wwcdn.weixin.qq.com/node/open/js/jwecom-1.0.0.js"></script>
<script>
  alert(ww.VERSION)
</script>

API

常规接口可参考以下文档:

所有命令接口均已 promise 化,具体用法请参考 ts 定义。

其他接口可以参考项目文档:

快速接入

为方便开发者快速接入,jwecom 提供了 getSignature 方法。开发者可以通过内联 jsapi_ticket 快速跑通接入流程:

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//
// 该代码仅用于快速接入,请勿在生产环境对外暴露JSAPI_TICKET
// Ticket有效期为2个小时,过期后请手动更换
//
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
const JSAPI_TICKET = 'sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg'

ww.register({
  corpId: 'ww7ca4776b2a70000',
  getConfigSignature() {
    return ww.getSignature(JSAPI_TICKET)
  },
  onConfigComplete(res) {
    alert(JSON.stringify(res))
  }
})

JSAPI Ticket 的获取方法可以参考企业微信文档,在开发阶段我们也可以通过以下命令快速获取:

# CORPID、SECRET为占位符,请自行填入真实的企业ID和应用Secret
npx wwutil ticket CORPID SECRET

已知问题

在使用通讯录展示组件时,需要用 jwecom 替换全局的 wx 对象,同时页面上仍需引入 jwxwork-1.0.0.js(可以不再引入 jweixin-1.2.0.js):

import * as ww from 'jwecom'

Object.defineProperty(window, 'wx', {
  configurable: true,
  value: ww
})

ww.register({
  // register options
})

ww.initOpenData().then(() => {
  WWOpenData.bindAll(document.querySelectorAll('ww-open-data'))
})
最后一次编辑于  2020-10-12  
点赞 0
收藏
评论

5 个评论

  • GZJJY
    GZJJY
    2021-11-23

    2021年11月23日现在这个包还可以用吗

    2021-11-23
    赞同
    回复
  • 玩乐青岛8号助理
    玩乐青岛8号助理
    2021-08-03

    账号异常怎么申诉

    2021-08-03
    赞同
    回复
  • 学会忘记
    学会忘记
    2021-05-10

    请问下通过 npm 怎么在vue项目安装jwecom 啊

    2021-05-10
    赞同
    回复
  • 半晴雨滴😅
    半晴雨滴😅
    2021-01-20

    开源的吗?源代码在哪里

    2021-01-20
    赞同
    回复
  • 福禄娃
    福禄娃
    2021-01-18

    <ww-open-data type="userName" openid="{{ userId }}"></ww-open-data>

    这样渲染不出对应姓名

    <ww-open-data type="userName" openid="Zhangsan"></ww-open-data>

    这样就可以渲染出,

    请问这个什么原因

    2021-01-18
    赞同
    回复 3
    • 阿斯顿
      阿斯顿
      2021-03-15
      冒号啊大哥
      2021-03-15
      回复
    • Pretender
      Pretender
      2021-03-16回复阿斯顿
      大佬了解这个ww-open-data吗,有问题请教下
      2021-03-16
      回复
    • 阿斯顿
      阿斯顿
      2021-03-18回复Pretender
      ????
      2021-03-18
      回复
登录 后发表内容