企业微信 API
企业内部开发第三方应用开发智慧硬件开发
企业内部开发第三方应用开发智慧硬件开发
  1. 通讯录管理
  • 开发指南
    • 开发前必读
    • 基本概念介绍
    • 回调配置
      • 回调配置
      • 回调配置-支持Http Get请求验证URL有效性
      • 回调配置-支持Http Post请求接收业务数据
      • 回调配置-获取企业微信服务器的ip段
    • 企业微信账号ID安全性全面升级
      • 概述
      • FAQ
      • 一、企业corpid的升级方案
        • 1.1 升级前后对比 - 1.3 历史已授权企业的方案
        • 1.4 corpid转换
      • 二、企业员工userid的升级方案
        • 2.1 升级前后对比 - 2.3历史已授权企业的方案
        • 2.4 userid的转换
      • 三、企业员工external_userid的升级方案
        • 3.1 升级前后对比 - 3.3 历史已授权企业的方案
        • 同意授权转换external_userid事件
        • 转换external_userid
        • 转换客户群成员external_userid
        • 设置迁移完成
      • 四、企业客户微信unionid的升级方案
        • 概述
        • 4.1 升级之后的接口变化
        • 4.2 unionid查询external_userid
    • 代开发应用安全性升级
      • 说明
      • 四、企业客户微信unionid的升级方案
      • 六、成员敏感信息权限升级
      • 七、本次升级对第三方服务商的影响及建议兼容方案
      • FAQ
      • 一、企业corpid的升级方案
        • 1.1 升级前后对比-1.3 历史已授权代开发应用方案
        • 1.4 corpid转换
      • 二、企业员工userid的升级方案
        • 2.1 升级前后对比-2.3 历史已授权代开发应用的方案
        • 2.4 userid的转换
      • 三、企业客户external_userid的升级方案
        • 3.1 升级前后对比-3.2 升级之后的接口变化
        • 3.2.1 转换external_userid
        • 3.2.2 转换客户群成员external_userid
      • 五、代开发应用迁移状态
        • 5.1 代开发应用设置迁移完成
        • 5.2 代开发应用查询迁移状态
    • ID转换接口
      • ID转换接口
      • corpid的转换
      • userid的转换
      • external_userid的转换-转换客户external_userid
      • external_userid的转换-转换客户群成员external_userid
    • unionid与external_userid的关联
      • unionid与external_userid的关联
      • unionid转换为第三方external_userid
      • external_userid查询pending_id
    • 获取服务商凭证
      POST
  • 基础
    • 应用授权
      • 企业授权应用
      • 成员授权应用
      • 自建应用代开发
      • 通讯录权限体系
      • 接口调用
        • 获取应用二维码
        • 明文corpid转换为加密corpid
        • 获取第三方应用凭证
        • 获取预授权码
        • 设置授权配置
        • 获取企业永久授权码
        • 获取企业授权信息
        • 获取企业凭证
        • 获取应用的管理员列表
      • 回调接口
        • 概述
        • 共享应用事件回调
        • 授权组织架构权限通知
        • 推送suite_ticket
        • 授权通知事件-授权成功通知
        • 授权通知事件 变更授权通知
        • 授权通知事件 取消授权通知
        • 成员通知事件 新增成员事件
        • 成员通知事件 更新成员事件
        • 成员通知事件 删除成员事件
        • 部门通知事件 新增部门事件
        • 部门通知事件 更新部门事件
        • 部门通知事件 删除部门事件
        • 标签通知事件 标签成员变更事件
        • 重置永久授权码通知
        • 应用管理员变更通知
    • 接口调用许可
      • 概述与指引
      • 订单管理
        • 下单购买帐号
        • 下单续期帐号-创建续期任务
        • 下单续期帐号-提交续期订单
        • 获取订单列表
        • 获取订单详情
        • 获取订单中的帐号列表
        • 取消订单
      • 账号管理
        • 激活帐号-激活帐号
        • 激活帐号-批量激活帐号
        • 获取激活码详情-获取激活码详情
        • 获取激活码详情-批量获取激活码详情
        • 获取企业的帐号列表
        • 获取成员的激活详情
        • 帐号继承
        • 分配激活码给下游企业
      • 应用管理
        • 获取应用的接口许可状态
      • 回调通知
        • 接口许可失效通知
        • 支付成功通知
        • 退款结果通知
        • 自动激活回调通知
      • 自动激活设置
        • 设置企业的许可自动激活状态
        • 查询企业的许可自动激活状态
      • 民生减免条件查询
    • 收银台
      • 接入指引
      • 功能概述
        • 概述
        • 商户号开通
        • 定价策略配置
        • 企业客户购买
        • 订单收款工具
      • 接口调用
        • 获取订单详情
        • 获取订单列表
        • 获取企业永久授权码
        • 获取企业授权信息
        • 延长试用期
      • 回调通知
        • 应用版本变更通知
        • 下单成功通知
        • 改单通知
        • 支付成功通知
        • 退款通知
    • 推广二维码
      • 接入指引
      • 调用接口
        • 获取注册码
        • 查询注册状态
        • 设置授权应用可见范围
        • 设置通讯录同步完成
      • 回调通知
        • 注册完成回调事件
    • 账号ID
      • 概述
      • 安全性升级说明
        • 代开发应用安全性升级
          • 说明
          • 四、企业客户微信unionid的升级方案
          • 6.1. 升级后的变化
          • 七、本次升级对第三方服务商的影响及建议兼容方案
          • FAQ
          • 一、企业corpid的升级方案
            • 1.1 升级前后对比-1.3 历史已授权代开发应用方案
            • 1.4 corpid转换
          • 二、企业员工userid的升级方案
            • 2.1 升级前后对比-2.3 历史已授权代开发应用的方案
            • 2.4 userid的转换
          • 三、企业客户external_userid的升级方案
            • 3.1 升级前后对比-3.2 升级之后的接口变化
            • 3.2.1 转换external_userid
            • 3.2.2 转换客户群成员external_userid
          • 五、代开发应用迁移状态
            • 5.1 代开发应用设置迁移完成
            • 5.2 代开发应用查询迁移状态
      • 企业微信帐号ID安全性全面升级
        • 一、企业corpid的升级方案
          • 1.1 升级前后对比-1.3 历史已授权企业的方案
          • 1.4 corpid转换
        • 二、企业员工userid的升级方案
          • 2.1 升级前后对比-2.3 历史已授权企业的方案
          • 2.4 userid的转换
        • 三、企业客户external_userid的升级方案
          • 3.1 升级前后对比-3.3 历史已授权企业的方案
          • 同意授权转换external_userid事件
          • 转换external_userid
          • 转换客户群成员external_userid
          • 设置迁移完成
        • 四、企业客户微信unionid的升级方案
          • 4.1 升级之后的接口变化
          • FAQ
          • 4.2 unionid查询external_userid
      • ID转换接口
        • unionid与external_userid的关联
          • unionid与external_userid的关联
          • unionid转换为第三方external_userid
          • external_userid查询pending_id
        • corpid的转换
        • userid的转换
        • external_userid的转换-转换客户external_userid
        • external_userid的转换-转换客户群成员external_userid
        • 客户标签ID的转换
        • 微信客服ID的转换
    • 通讯录管理
      • 概述
      • 通讯录展示组件
      • 第三方通讯录编辑授权
      • 成员管理
        • 创建成员
        • 读取成员
        • 更新成员
        • 删除成员
        • 批量删除成员
        • 获取部门成员
        • 获取部门成员详情
        • userid与openid互换-userid转openid
        • userid与openid互换-openid转userid
        • 二次验证
        • 邀请成员
        • 手机号获取userid
        • 邮箱获取userid
        • 获取成员授权列表
        • 查询成员用户是否已授权
        • 获取选人ticket对应的用户
        • 获取成员ID列表
      • 部门管理
        • 获取单个部门详情
        • 创建部门
        • 更新部门
        • 删除部门
        • 获取部门列表
        • 获取子部门ID列表
      • 标签管理
        • 创建标签
        • 更新标签名字
        • 删除标签
        • 获取标签成员
        • 增加标签成员
        • 删除标签成员
        • 获取标签列表
      • 异步批量接口
        • 概述
        • 增量更新成员
        • 全量覆盖成员
        • 全量覆盖部门
        • 获取异步任务结果
      • 异步导出接口
        • 导出任务完成通知
        • 概述
        • 导出成员
        • 导出成员详情
        • 导出部门
        • 导出标签成员
        • 获取导出结果
      • 通讯录回调通知
        • 异步任务完成通知
        • 成员通知事件-更新成员事件
        • 成员通知事件-删除成员事件
        • 部门通知事件-新增部门事件
        • 部门通知事件-更新部门事件
        • 部门通知事件-删除部门事件
        • 标签通知事件
        • 成员通知事件-新增成员事件
      • 通讯录搜索
        • 通讯录搜索-通讯录单个搜索
        • 通讯录搜索-通讯录批量搜索
      • 通讯录ID转译
        • 概述
        • 上传需要转译的文件
        • 异步通讯录id转译
        • 获取异步任务结果
        • 异步任务回调通知
      • 通讯录userid排序
        POST
    • 身份验证
      • 网页授权登录
        • 开始开发
        • 构造网页授权链接
        • 获取访问用户身份
        • 获取访问用户敏感信息
      • 扫码授权登录
        • 接入指引
        • 获取登录用户信息
    • 企业互联
      • 概述
      • 获取下级企业付费版本信息
      • 获取应用共享信息
    • 上下游
      • 获取应用共享信息
    • 消息推送
      • 概述
      • 发送应用模板消息
      • 接收消息与事件
        • 消息格式
        • 事件格式
        • 被动回复消息格式
        • 概述
          • 概述
          • 概述-验证URL有效性
          • 概述-使用接收消息
          • 概述-获取企业微信服务器的ip段
      • 发送应用消息
        • 消息类型
        • 发送应用消息
      • 更新模版卡片消息
      • 撤回应用消息
    • 应用管理
      • 获取应用
        • 获取应用-获取指定的应用详情
        • 获取应用-获取access_token对应的应用列表
      • 设置工作台自定义展示
        • 模版类型数据结构
        • 修改设置工作台自定义开关事件推送
        • 设置工作台自定义展示-设置应用在工作台展示的模版
        • 设置工作台自定义展示-获取应用在工作台展示的模版
        • 设置工作台自定义展示-设置应用在用户工作台展示的数据
    • 素材管理
      • 概述
      • 异步上传临时素材
        • 概述
        • 回调异步任务结果
        • 生成异步上传任务
        • 查询异步任务结果
      • 上传临时素材
      • 上传图片
      • 获取临时素材
      • 获取高清语音素材
    • 电子发票
      • 概述
      • 查询电子发票
      • 更新发票状态
      • 批量更新发票状态
      • 批量查询电子发票
  • 连接微信
    • 客户联系
      • 概述
      • 成员对外信息
      • 企业服务人员管理
        • 获取配置了客户联系功能的成员列表
        • 客户联系「联系我」管理-配置客户联系「联系我」方式
        • 客户联系「联系我」管理-更新企业已配置的「联系我」方式
        • 客户联系「联系我」管理-获取企业已配置的「联系我」方式
        • 客户联系「联系我」管理-获取企业已配置的「联系我」列表
        • 客户联系「联系我」管理-删除企业已配置的「联系我」方式
        • 客户联系「联系我」管理-结束临时会话
      • 客户管理
        • 获取客户列表
        • 获取客户详情
        • 批量获取客户详情
        • 修改客户备注信息
        • 企业主体unionid转换为第三方external_userid
        • 第三方主体unionid转换为第三方external_userid
        • 代开发应用external_userid转换
      • 客户标签管理
        • 管理企业标签
          • 说明
          • 管理企业标签-获取企业标签库
          • 管理企业标签-添加企业客户标签
          • 管理企业标签-编辑企业客户标签
          • 管理企业标签-删除企业客户标签
        • 编辑客户企业标签
      • 在职继承
        • 分配在职成员的客户
        • 查询客户接替状态
        • 分配在职成员的客户群
      • 离职继承
        • 获取待分配的离职成员列表
        • 分配离职成员的客户
        • 查询客户接替状态
        • 分配离职成员的客户群
      • 客户群管理
        • 获取客户群列表
        • 获取客户群详情
        • 客户群opengid转换
      • 联系我与客户入群方式
        • 权限说明
        • 结束语定义
        • 配置客户联系「联系我」方式
        • 获取企业已配置的「联系我」方式
        • 获取企业已配置的「联系我」列表
        • 更新企业已配置的「联系我」方式
        • 删除企业已配置的「联系我」方式
        • 结束临时会话
      • 客户朋友圈
        • 概述
        • 企业发表内容到客户的朋友圈
          • 企业发表内容到客户的朋友圈-创建发表任务
          • 企业发表内容到客户的朋友圈-获取任务创建结果
        • 获取客户朋友圈全部的发表记录
          • 获取客户朋友圈全部的发表记录-获取企业全部的发表列表
          • 获取客户朋友圈全部的发表记录-获取客户朋友圈企业发表的列表
          • 获取客户朋友圈全部的发表记录-获取客户朋友圈发表时选择的可见范围
          • 获取客户朋友圈全部的发表记录-获取客户朋友圈发表后的可见客户列表
          • 获取客户朋友圈全部的发表记录-获取客户朋友圈的互动数据
        • 停止发表企业朋友圈
      • 消息推送
        • 获取企业的全部群发记录
          • 概述
          • 获取企业的全部群发记录-获取群发记录列表
          • 获取企业的全部群发记录-获取群发成员发送任务列表
          • 获取企业的全部群发记录-获取企业群发成员执行结果
        • 创建企业群发
        • 提醒成员群发
        • 停止企业群发
        • 发送新客户欢迎语
        • 入群欢迎语素材管理-添加
        • 入群欢迎语素材管理-编辑
        • 入群欢迎语素材管理-获取
        • 入群欢迎语素材管理-删除
      • 统计管理
        • 获取「联系客户统计」数据
        • 获取「群聊数据统计」数据-按群主聚合的方式
        • 获取「群聊数据统计」数据-按自然日聚合的方式
      • 回调通知
        • 事件格式
      • 管理商品图册
        • 概述
        • 创建商品图册
        • 获取商品图册
        • 删除商品图册
        • 获取商品图册列表
        • 编辑商品图册
      • 管理聊天敏感词
        • 概述
        • 管理聊天敏感词-新建敏感词规则
        • 管理聊天敏感词-获取敏感词规则列表
        • 管理聊天敏感词-获取敏感词规则详情
        • 管理聊天敏感词-修改敏感词规则
        • 管理聊天敏感词 删除敏感词规则
      • 上传附件资源
    • 微信客服
      • 概述
      • 回调通知
      • 客服帐号管理
        • 添加客服帐号
        • 删除客服帐号
        • 修改客服帐号
        • 获取客服帐号列表
        • 获取客服帐号链接
      • 接待人员管理
        • 添加接待人员
        • 删除接待人员
        • 获取接待人员列表
      • 会话分配与消息收发
        • 分配客服会话
          • 概述
          • 分配客服会话-获取会话状态
          • 分配客服会话-变更会话状态
        • 接收消息和事件
          • 概述
          • 消息类型
          • 接收消息和事件-读取消息
        • 发送消息
        • 发送欢迎语等事件响应消息
      • 「升级服务」配置
        • 什么是升级服务
        • 「升级服务」配置-获取配置的专员与客户群
        • 「升级服务」配置-为客户升级为专员服务
        • 「升级服务」配置-为客户升级为客户群服务
        • 「升级服务」配置-为客户取消推荐
      • 其他基础信息获取
        • 获取客户基础信息
        • 获取企业状态信息-获取视频号绑定状态
      • 统计管理
        • 获取「客户数据统计」企业汇总数据
        • 获取「客户数据统计」接待人员明细数据
    • 企业支付
      • 对外收款
        • 概述
        • 获取收款项目的商户单号
        • 获取对外收款记录
    • 家校沟通
      • 概述
      • 接入指引
      • 基础接口
        • 获取「学校通知」二维码
        • 管理「学校通知」的关注模式-设置关注「学校通知」的模式
        • 管理「学校通知」的关注模式-获取关注「学校通知」的模式
        • 发送「学校通知」
        • 获取外部联系人详情
        • 外部联系人openid转换
        • 手机号转外部联系人ID
        • 管理「老师可查看班级」模式-设置「老师可查看班级」的模式
        • 管理「老师可查看班级」模式-获取「老师可查看班级」的模式
        • 获取可使用的家长范围
      • 网页授权登录
        • 开始开发
        • 构造网页授权链接
        • 获取家校访问用户身份
        • 获取访问用户身份
      • 学生与家长管理
        • 创建学生
        • 删除学生
        • 更新学生
        • 批量创建学生
        • 批量删除学生
        • 批量更新学生
        • 创建家长
        • 删除家长
        • 更新家长
        • 批量创建家长
        • 批量删除家长
        • 批量更新家长
        • 读取学生或家长
        • 获取部门成员详情
        • 设置家校通讯录自动同步模式
        • 获取部门家长详情
      • 部门管理
        • 标准年级对照表
        • 创建部门
        • 更新部门
        • 删除部门
        • 获取部门列表
        • 修改自动升年级的配置
      • 家校通讯录变更回调
        • 成员变更事件
        • 部门变更事件
    • 家校应用
      • 上课直播
        • 获取观看直播统计V2
        • 获取未观看直播统计V2
        • 获取老师直播ID列表
        • 获取直播详情
        • 获取观看直播统计
        • 获取未观看直播统计
        • 删除直播回放
      • 班级收款
        • 获取学生付款结果
        • 获取订单详情
  • 办公
    • 邮件
      • 概述
      • 回调通知
      • 发送邮件
        • 发送普通邮件
        • 发送日程邮件
        • 发送会议邮件
      • 获取接收的邮件
        • 获取收件箱邮件列表
        • 获取邮件内容
      • 管理应用邮箱账号
        • 更新应用邮箱帐号
        • 查询应用邮箱帐号
    • 文档
      • 概述
      • 管理文档
        • 新建文档
        • 重命名文档/收集表
        • 删除文档/收集表
        • 获取文档基础信息
        • 分享文档
      • 设置文档权限信息
        • 获取文档权限信息
        • 修改文档查看规则
        • 修改文档通知范围及权限
        • 修改文档安全设置
      • 管理收集表
        • 创建收集表
        • 编辑收集表
        • 收集表的统计信息查询
        • 读取收集表答案
        • 获取收集表信息
      • 回调通知
        • 概述
        • 修改文档成员事件
        • 删除文档事件
        • 收集表完成事件
    • 日程
      • 概述
      • 管理日历
        • 日历接口 创建日历
        • 日历接口 更新日历
        • 日历接口 获取日历详情
        • 日历接口 删除日历
      • 管理日程
        • 更新重复日程
        • 日程接口 创建日程
        • 日程接口更新日程
        • 新增日程参与者
        • 删除日程参与者
        • 日程接口 获取日历下的日程列表
        • 日程接口 获取日程详情
        • 日程接口 取消日程
      • 回调通知
        • 概述
        • 删除日历事件
        • 修改日历事件
        • 修改日程事件
        • 删除日程事件
    • 会议
      • 回调通知
      • 概述
      • 创建预约会议
      • 修改预约会议
      • 取消预约会议
      • 获取成员会议ID列表
      • 获取会议详情
    • 微盘
    • 直播
      • 概述
      • 直播回调事件
      • 创建预约直播
      • 修改预约直播
      • 取消预约直播
      • 删除直播回放
      • 在微信中观看直播或直播回放
      • 获取成员直播ID列表
      • 获取直播详情
      • 获取直播观看明细
      • 获取跳转小程序商城的直播观众信息
    • 打卡
      • 获取员工打卡规则
      • 获取打卡记录数据
      • 获取打卡日报数据
      • 获取打卡月报数据
      • 获取打卡人员排班信息
      • 为打卡人员排班
      • 获取设备打卡数据
    • 审批
      • 审批流程引擎
      • 概述
      • 审批申请状态变化回调通知
      • 复制/更新模板到企业
      • 获取审批模板详情
      • 提交审批申请
      • 批量获取审批单号
      • 获取审批申请详情
      • 获取企业假期管理配置
      • 获取成员假期余额
      • 修改成员假期余额
  • 智慧硬件
    • 概述
    • 接口调用
      • 获取硬件授权结果
      • 获取考勤打卡原始数据
      • 获取温度检测原始数据
      • 获取门禁通行原始数据
      • 读取门禁通行规则
      • 写入门禁通行规则
      • 修改门禁通行规则
      • 删除门禁通行规则
    • 回调通知
      • 设备数据授权变更回调
      • 考勤打卡原始数据回调
      • 门禁通行原始数据回调
      • 体温检测原始数据回调
  1. 通讯录管理

通讯录展示组件

1. 背景介绍

企业通讯录是企业的重要敏感数据,第三方将不再直接获取到授权企业的通讯录数据(接口将不再返回人名与部门名)。第三方页面若需要展示用户的通讯录信息,可使用如下的 open-data 组件,以提供更加安全良好的体验。

相关概念可以参考微信小程序的 open-data 组件。
常见问题可参考 FAQ

2. 浏览器方案

2.1 环境要求

  • 企业微信APP需 2.8.10 及以上版本

2.2 使用方法

1. 通过企业微信登录应用管理后台

在非微信、企业微信内置浏览器中使用 open-data 时,需要通过企业微信管理端跳转或第三方登录授权进行登录。

需要注意,通过上述方法登录跳转的目标域名要和使用 open-data 的页面域名保持一致。

在开发过程中,我们可以在 open-data 调试页面中查看当前浏览器登录的应用信息。

2. 引入 open-data SDK

在页面上引入以下SDK:

<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js" referrerpolicy="origin"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js" referrerpolicy="origin"></script>
  • sdk 内容是动态返回的,请严格按照上面的方式引入,不要保存到项目本地后打包引入
  • referrerpolicy 声明为 origin 是为了让 sdk 能够顺利识别关键域名,不能去掉

3. 进行 agentConfig

无论是微信、企业微信的内置浏览器还是第三方浏览器,都需要通过wx.agentConfig登记第三方应用的身份信息。

需要注意,在第三方浏览器中调用 wx.agentConfig 前不需要进行 wx.config。

注意:在企业微信客户端的页面上,进行 agentConfig 的调用,必须要等 wx.config 完成后才调用(即 wx.config 的成功回调)

4. 绑定 open-data 元素

上述步骤完成后,我们就可以通过 WWOpenData.bind 方法对页面上的元素进行绑定,完成后 SDK 将在绑定的元素上渲染出对应的开放数据:

<!-- 注意:这里的 openid 是 userid 和 departmentid 的统称 -->
<ww-open-data type="userName" openid="{{openid}}"></ww-open-data>
<script>
	WWOpenData.bind(document.querySelector('ww-open-data'))
</script>

open-data 元素上的属性请参考[2.5 元素属性](#17172/2.5 元素属性)章节。
在支持 custom elements 的浏览器中,SDK 会自动对 元素进行绑定。

2.3 API 列表

WWOpenData.bind(el: Element)

绑定 open-data 元素,在获取数据后,SDK 将在元素内渲染出对应的开放数据。

WWOpenData.bindAll(nodeList: NodeList | Array)

批量绑定 open-data 元素,参考 WWOpenData.bind。

注意:为了保证在所有环境下表现正常,一旦 open-data 元素的内容发生了变化,必须调用 WWOpenData.bind 接口重新绑定一次

WWOpenData.on(event: string, callback: Function)

为兼容旧版本终端,使用前需要判断函数是否存在

添加事件监听函数,事件列表参考[2.4 事件列表](#17172/2.4 事件列表)。

WWOpenData.off(event: string, callback: Function)

为兼容旧版本终端,使用前需要判断函数是否存在

移除事件监听函数。

WWOpenData.checkSession(params: CheckSessionParams)

为兼容旧版本终端,使用前需要判断函数是否存在

检查登录态信息。

if (WWOpenData.checkSession) {
	WWOpenData.checkSession({
		success() {
			console.log('有登录态')
		},
		fail() {
			console.error('登录态过期')
		}
	})
}

WWOpenData.initCanvas()

启动 canvas 支持功能

WWOpenData.prefetch(params: PrefetchParams)

预加载通讯录数据

if (WWOpenData.prefetch) {
	WWOpenData.prefetch({ items }, (err, data) => {
		if (err) {
			// 错误处理
		}
		// 数据处理
	})
}

注意:出于安全设计和浏览器策略,prefetch 接口必须在 https 的网页下调用,否则会报运行错误

2.4 事件列表

error

当 SDK 获取数据失败时触发。

update

当 open-data 元素渲染内容发生变更时触发。

2.5 元素属性

页面通过 open-data 元素上的属性控制需要渲染的内容:

属性类型必填说明
typestring是开放数据类型
openidstring是数据ID,根据type取值而定
corpidstring否企业ID,用户所属的企业 corpid

假设有“上下游”或“教育局校互联”企业 A 和 B, 开发者需要在页面同时渲染 A和B的通讯录数据,这时可以通过填入特定企业的 corpid,去指定要渲染的企业数据

type 的合法值

值说明
userName用户名称
userAlias用户别名
departmentName部门名称

若 type=userName,此时 openid 对应 userid
若 type=userAlias,此时 openid 对应 userid。如果用户没有别名,将返回传入的openid
若 type=departmentName,此时 openid 对应 departmentid
每 20ms 最多绑定 1000 个 open-data 元素,超出的部分将被忽略
如果用户或部门不合法,将返回传入的openid

2.6 前端框架适配

若页面使用了 vue、react 等前端框架,可在框架提供的钩子函数中调用 WWOpenData.bind 进行绑定:

Vue

<template>
	<ww-open-data :type="type" :openid="openid" />
</template>

<script>
export default {
	props: ['type', 'openid'],
	mounted() {
		WWOpenData.bind(this.$el)
	}
}
</script>

React

import React, { useRef, useLayoutEffect } from 'react'

export default function WWOpenDataCom({ type, openid }) {
	const ref = useRef(null)
	useLayoutEffect(() => {
		WWOpenData.bind(ref.current)
	})
	return <ww-open-data ref={ref} type={type} openid={openid} />
}

2.7 示例代码

<html>
<body>
	<ww-open-data type="userName" openid="{{openid}}"></ww-open-data>
	<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
	<script src="//open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
	<script>
		(async () => {
			if (/MicroMessenger/i.test(navigator.userAgent)) {
				await config(configParams)
			}
			await agentConfig(agentConfigParams)
			// 注意: 在企业微信平台下,只有 agentConfig 成功回调后,WWOpenData 才会注入到 window 对象上面
			WWOpenData.bindAll(document.querySelectorAll('ww-open-data'))
		})()
		function config(config) {
			return new Promise((resolve, reject) => {
				wx.config(config)
				wx.ready(resolve)
				wx.error(reject)
			})
		}
		function agentConfig(config) {
			return new Promise((success, fail) => {
				wx.agentConfig({ ...config, success, fail })
			})
		}
	</script>
</body>
</html>

更加完整的示例程序,可以参考 open-data 控件 demo。

3. 小程序方案

3.1 环境要求

  • 企业微信APP需 2.8.9 及以上版本
  • 微信上小程序基础库版本需 1.9.6 及以上版本
  • 开发者工具中不要在企业微信小程序模式下运行插件

注意:当前小程序通讯录展示插件不支持显示头像

3.2 使用方法

(1) 开发者在小程序管理后台申请使用插件,添加路径:设置 ->第三方服务 -> 插件管理 -> 添加插件,搜索并添加插件ID: wx5917c8c26f85c588,无需审核确认。
(2) 开发者在小程序app.json 文件中添加对插件的引用

"plugins": {
	"contactPlugin": {
		"version": "2.1.0",
		"provider": "wx5917c8c26f85c588"
	}
}

(3) 开发者在具体引用插件的页面文件json文件中,添加对组件的引用,例如:

"usingComponents": {
	"ww-open-data":"plugin://contactPlugin/ww-open-data"
}

(4) 在 wxml 中调用 ww-open-data 组件展示用户信息:

<ww-open-data
  type="{{type}}"
  corpid="{{corpid}}"
  openid="{{openid}}"
  bindupdate="onDataUpdate"
/>

参数说明:

属性类型必填说明最低版本
typestring是开放数据类型1.0.0
corpidstring是用户所属的企业corpid1.0.0
openidstring是数据ID,根据type取值而定1.0.0
bindupdateeventhandle否当组件展示的数据发生变更时触发,event.detail = { type, corpid, openid, hasData }2.1.0

type 与 openid 属性参考[2.5 元素属性](#17172/2.4 元素属性)
假设有上下游企业 A 和 B, 开发者需要在页面同时渲染 A和B的通讯录数据,这时可以通过填入特定企业的 corpid,去指定要渲染的企业数据

3.3 开发调试

在开发者工具开发调试,需要用企业微信扫码运行时,需要在“添加编译模式”里的启动参数添加如下参数:debug_extinfo=true&debug_plugin=true,才能正常调起授权登录。添加方法请参考下图:

imgimg

3.4 示例程序

开发者可参考 open-data 小程序 demo。

4. canvas 支持方案

4.1 作用

  • 支持三方应用在 canvas 中安全渲染通讯录数据
  • 支持 echarts、antv g2 等第三方图形库,在 canvas 渲染模式下,正确渲染通讯录数据

4.2 使用方式

1 . 在完成了 WWOpenData 的初始化后,调用 initCanvas 方法

if (WWOpenData.initCanvas) {
	WWOpenData.initCanvas()
}

2 . 调用 WWOpenData 的 prefetch 方法,将需要在图形显示的名称,进行预获取。可以参考以下代码

const result = await new Promise((resolve, reject) => {
	WWOpenData.prefetch({ items }, (err, data) => {
		if (err) {
			return reject(err)
		}
		resolve(data)
	})
})

其中,items 和 result 的格式分别是:

items: [
	{
		type: string, // userType
		id: string, // openid
		corpid: string, // corpid (非必须)
	}
]

result: [
	{
		type: string,
		id: string,
		data: string, // 重要,这里的数据需要传入到 canvas 图形库中
	}
]

3 . 到了这一步,已经完备了 canvas 展示通讯录数据的将, result 返回的 data,开发者可以理解成是 加密过的通讯录数据,接下来,开发者只需要把这些加密过的通讯录数据,当成正常的数据,放到 canvas 的接口 或者 第三方图形库的接口上,进行渲染即可。

4 . 一般情况下,为了避免页面受到 xss 攻击时,泄漏图片数据,默认情况下,渲染过通讯录信息的 canvas,是禁止使用 toDataUrl 导出图片的。如果确实有这样的需求,服务商可以在渲染 canvas 前,调用 WWOpenData.enableCanvasSharing 这个 api,调用后,渲染出来的 canvas 就能通过 toDataUrl 导出图片。与之相对,WWOpenData.disableCanvasSharing 这个 api 可以重新禁止 canvas 导出图片。

5. 发送应用消息支持id转译

应用在下发消息时,可以在内容中以模板参数语法包含id,企业微信在下发时会将其替换为成员名或部门名,目前支持文本/文本卡片/图文/图文(mpnews)这四种消息类型,参数使用说明具体参见“发送应用消息”,注意需要在原接口参数上添加 enable_id_trans 字段且置为1,才能开启转译.

6. 人名或部门名搜索方案

通过通讯录搜索接口,可以根据名字或拼音搜索出对应的userid或部门id。

7. 包含人名部门名的文件导出方案

先将文件通过“上传需要转译的文件”接口上传到企业微信服务端,接着调用“异步通讯录id转译”接口提交转译任务,然后通过“获取异步任务结果”获取最终下载文件的url,注意该url仅能在有用户登录态的浏览器打开以下载文件,详情参见“通讯录ID转译”。

8. 通讯录用户排序方案

通过通讯录userid排序,可以根据姓名拼音升序或者降序排列。

FAQ

  1. 页面使用了 iframe,iframe 内找不到 WWOpenData
    解决方法:针对应用页面使用了 iframe 的情况,可以通过 window.parent 的方式往最外层的 webview 访问 WWOpenData 对象。

  2. agentConfig 签名一直报错
    注意点:agentConfig 的签名参数 和 wx.config 是不一样的,参考文档

  3. 第三方浏览器,其他浏览器工作正常,safari 工作不正常
    解答:由于 Safari 浏览器对 cors 策略的处理和其他浏览器不一样,在第三方浏览器上,请务必按照文档完成 wx.agentConfig 的处理

  4. 关于 jWeixin sdk 版本的处理,请注意:在企业微信上,必须引入的是 1.2.0 版本的 jWeixin sdk,在微信 或者 其他第三方浏览器,可以引入其他版本的 jWeixin sdk

  5. 单页面应用,在 windows 客户端可以渲染,但是在 iOS 客户端不能渲染
    解答:由于目前 windows 客户端 和 iOS 存在差异,为了保证各个端运行正确,请严格保证如下标准:如果单页面应用使用了 browser history 作为路由,请保证每次 url 变更后,都正常完成 wx.config 和 wx.agentConfig 初始化。

  6. 页面在浏览器,在 iOS,Mac,Android 上面的企业微信都表现正常,但是在 windows 企业微信下,会偶发不能渲染通讯录控件内容
    解答:由于 企业微信的 windows 客户端浏览器内核不支持 customElements,每次更新了 open-data 元素后,需要用 bind 或者 bindAll 接口对目标元素进行一次更新,这样才能保证 open-data 元素实时渲染正确的数据。遇到上面的情况,请检查一下页面代码,看看有没有可能出现时序问题:先执行了 bind,然后才渲染出对应的 open-data 元素

  7. 如何自定义显示内容,比如表单需要显示“提交人+提交日期+业务类型”?

    将需要替换通讯录名称的文本替换为ww-open-data标签引用,其它保留不变。比如,

    <ww-open-data type="userName" openid="{{openid}}"></ww-open-data>+提交日期+业务类型
    
  8. 通讯录展示组件,是否可以一次性显示多个名称?
    组件的每个ww-open-data标签引用对应到一个通讯录名称,显示多个名称,则引用多个ww-open-data。比如,显示完整的部门路径,只需要将路径的部门id依次引用即可。

  9. 第三方管理端,如何实现成员搜索?
    调用接口:通讯录搜索,传入搜索的关键词,获取搜索结果的userid/departmentid。
    再调用通讯录展示组件,显示出搜索的成员名称/部门名称。

  10. 如何实现搜索后的结果按拼音排序?
    调用接口:通讯录userid排序,支持指定的用户列表按拼音升序/降序,返回的结果为排序后的列表。

  11. 第三方管理端,导入业务数据文件(如打卡记录),包括了通讯录名称,如何识别?
    如果业务数据文件中记录中有唯一字段标识,则可以直接对应关联;
    如果通过通讯录名称关联用户,调用 通讯录搜索 接口,获取搜索结果的userid/departmentid,对应关联到用户

  12. 第三方管理端,支持导出业务数据文件(如打卡列表),需要包含通讯录名称,如何实现?
    解决方案参考:通讯录ID转译。以模板参数填入数据文件中,并上传至企业微信后台,数据文件中的模板参数就会替换为通讯录名称,并获取到一个文件访问地址。
    该文件访问地址,需要用户通过企业微信登录至第三方管理端,才可下载。

  13. 页面请求数据报错403
    img
    通常是由于用户未登录至第三方业务页面导致,可以访问 open-data 调试页面 查看登录信息。
    注意,在单点登录的场景(包括有扫码登录,应用安装完成跳转,以及从企业微信Web管理端业务跳转),在指定的redirect_uri的域名,才会有登录用户身份。
    比如,扫码登录后跳转到域名A,在域名B下使用组件,是会报错403的。

  14. 已删除的成员或部门,是否能通过通讯录组件展示名字
    可以。对于同一个userid或部门ID,企业微信仅展示最后一个删除的成员或部门的名字;删除之后再重新添加相同的userid或部门ID,则只展示新成员或新部门的名字。(注:部门名仅支持展示2021年10月1号之后删除的部门)

【企业微信】API开发者 微信交流群

用微信扫右侧二维码,加入【企业微信】API开发者 交流群,互助沟通

扫码加入交流群
上一页
概述
下一页
第三方通讯录编辑授权
Built with