0.1.12 • Published 4 years ago

jwxwork v0.1.12

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

jwxwork

微信(企业微信)JSSDK,可用于替代 jweixin.js。

注意:第三方应用仍需在页面上引入 https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js

主要特性

  • 封装 config 逻辑,根据环境自动进行 config、agentConfig
  • API 同时支持 promise 和回调两种返回方式
  • 增加 ts 类型定义

使用方法

import * as ww from 'jwxwork'

/**
 * 在调用其他 JSAPI 前先注册应用信息
 */
ww.register({
  corpId: 'ww7ca4776b2a70000',
  jsApiList: [
    'selectExternalContact',
    'openUserProfile'
  ],
  async getConfigSignature(url) {
    // 根据 url 生成 config 签名信息(开发者自行实现)
    return await getJsApiSignature(url)
  }
})

/**
 * 注册应用信息后可以直接调用 JSAPI 接口,SDK 内部会自行处理 config 和 agentConfig 的顺序
 */
; (async () => {
  const { userIds } = await ww.selectExternalContact()
  await ww.openUserProfile({ type: 2, userid: userIds[0] })
})()

API

ww.register(options)

  • 参数:
    • {Object} options 注册参数
  • 说明:

    注册应用信息,在调用其他JS接口前必须先调用该接口。

    在注册应用信息后,SDK会在需要的时候自动调用 wx.config,此时SDK会通过 getConfigSignature 等回调函数获取签名信息。

  • options 结构:

    属性类型默认值必填说明
    corpIdstring当前用户所属企业ID(或公众号的 appId)
    agentIdnumber / string企业微信第三方应用的AgentID
    jsApiListArray<string> "config" 需要使用的JS接口列表
    getConfigSignatureFunctionconfig 签名生成函数,详见后续说明
    getAgentConfigSignatureFunctionagentConfig 签名生成函数,详见后续说明
    openTagListArray<string>需要使用的开放标签列表,例如 "wx-open-launch-app"
    onConfigSuccessFunctionconfig 成功回调
    onConfigFailFunctionconfig 失败回调
    onConfigCompleteFunctionconfig 完成回调
    onAgentConfigSuccessFunctionagentConfig 成功回调
    onAgentConfigFailFunctionagentConfig 失败回调
    onAgentConfigCompleteFunctionagentConfig 完成回调
  • getConfigSignature、getAgentConfigSignature 返回结构:

    属性类型必填说明
    timestampnumber / string生成签名的时间戳
    nonceStrstring生成签名的随机串
    signaturestring签名,生成方法见 JS-SDK使用权限签名算法
  • 示例代码:

    ww.register({
      corpId: 'ww7ca4776b2a70000',
      jsApiList: ['selectExternalContact'],
      async getConfigSignature(url) {
        /** 根据 url 生成 config 签名 */
        return { timestamp, nonceStr, signature }
      }
    })
  • 注意:

    • 企业自建应用只需要提供 getConfigSignature
    • 对第三方应用:
      • 在企业微信 3.0.24 及以后版本中,只需要提供 getAgentConfigSignature
      • 在其他环境下,必须同时提供 getConfigSignaturegetAgentConfigSignature
    • 签名函数在页面URL发生变更后需要重新调用,对使用哈希路由的单页应用,签名函数只会被调用一次

ww.initOpenData(options)

  • 参数:
    • {Object} [options] 通用回调参数
  • 返回值: Promise<Object> 结构同 wx.agentConfig
  • 说明:

    初始化企业微信开放数据域。在该接口返回成功后,可以直接调用 WWOpenData.bind 等方法。

  • options 结构:

    属性类型默认值必填说明
    successFunction成功回调
    failFunction失败回调
    completeFunction完成回调

ww.getSignature(options)

注意:该接口仅用于本地调试,请勿在线上版本中使用

  • 参数:
    • {Object} options 用于生成签名的参数,也可以直接传入 jsapi ticket
  • 返回值: {Object} result 签名结果
  • 说明:

    根据提供的参数生成签名。若只传入 ticket 参数,则默认为当前页面生成签名。

  • options 结构:

    属性类型默认值必填说明
    ticketstring用于签名的 JSAPI Ticket
    nonceStrstring随机生成生成签名的随机串
    timestampnumber取当前时间生成签名的时间戳
    urlstring取当前页面URL生成签名的URL
  • result 结构:

    属性类型说明
    nonceStrstring生成签名的随机串
    timestampnumber生成签名的时间戳
    signaturestring签名
  • 示例代码:

    ww.register({
      corpId: 'ww7ca4776b2a70000',
      jsApiList: ['selectExternalContact'],
      getConfigSignature(url) {
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        // 根据 JSAPI_TICKET 生成应用签名
        // 该代码仅用于本地调试,请勿在生产环境对外暴露 JSAPI_TICKET
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        const JSAPI_TICKET = 'sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg'
        return ww.getSignature(JSAPI_TICKET)
      }
    })

ww.on(name, callback)

  • 参数:
    • {string} name 监听的事件名称
    • {Function} callback 事件回调函数
  • 返回值: Promise<void> 成功监听后返回
  • 说明:

    等待 WeixinJSBridgeReady 后调用 WeixinJSBridge.on。用于监听 SDK 没有定义的事件。

ww.invoke(name, [params, callback])

  • 参数:
    • {string} name 调用的接口名称
    • {Object} [params] 接口传入参数
    • {Function} [callback] 回调函数
  • 返回值: Promise<unknown>
  • 说明:

    等待 WeixinJSBridgeReady 后调用 WeixinJSBridge.invoke。用于调用 SDK 没有定义的接口。

ww.onWeixinJSBridgeReady()

  • 返回值: Promise<void>
  • 说明:

    等待 WeixinJSBridge 注入完成。

ww.isWeixinJSBridgeReady

  • 类型: boolean
  • 说明:

    当前 WeixinJSBridge 是否已注入。

ww.ensureConfigReady()

  • 返回值: Promise<void>
  • 说明:

    根据当前环境检查 config 或 agentConfig 的状态。若 config 状态已失效(url 发生变更),会重新触发 config 流程。

0.1.12

4 years ago

0.1.11

4 years ago

0.1.10

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago