更新记录
1.0.0(2026-10-29)
- 新增企业微信初始化、能力检测、打开客户端、授权登录与文本、图片、文件、视频、链接、小程序六类分享API。
- 新增Android/iOS官方SDK原生混编、固定公开依赖、客户端检测、请求隔离、取消超时与释放流程。
- 新增分享受理与真实可关联回执分离、结果未知观察、统一错误码及有界脱敏诊断。
- 新增uni-app与uni-app x真实调用示例、完整环境报告、固定快照分段复制和手动复制回退。
- 新增客户接入说明、原生验收夹具、公共行为与双宿主资源检查;本版为候选源码,Apple编译、匹配基座及真实企业业务须另行验收。
平台兼容性
uni-app(5.33)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | × | √ | - | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | - | - |
uni-app x(5.33)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | - | × | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
企业微信授权登录与分享 UTS 插件(Android/iOS)
介绍
lizhao-wecom通过企业微信官方移动端SDK,为uni-app和uni-app x提供Android/iOS企业内部应用授权码登录与内容分享。当前为开发候选源码,尚未发布到插件市场;可用性以实际编译和匹配原生包的验收结果为准。
功能特色
| 能力 | API及作用 |
|---|---|
| 企业账号授权 | initialize注册企业配置,login取得一次性code和state,由业务后端继续验证身份 |
| 六类内容分享 | shareText、shareImage、shareFile、shareVideo、shareLink、shareMiniProgram |
| 明确分享结果 | 提交成功固定为dispatched;onShareResult仅通知实际且可关联的SDK回执 |
| 客户端与能力检查 | getCapabilitiesSync区分安装、未安装、查询失败和不支持;openApp打开企业微信 |
| 生命周期控制 | cancelRequest停止本地等待;release释放本模块资源,隔离迟到/重复回执 |
| 完整排查报告 | 双宿主示例有底部日志、一键完整复制、固定快照分段与复制失败手动入口 |
适合哪些场景
| 场景 | 推荐能力与边界 |
|---|---|
| 企业内部App成员登录 | 企业自建应用移动端SSO;插件只交授权码,后端完成成员校验、账号绑定与业务会话 |
| 企业内资料分发 | 文本、图片、文件、视频或业务链接;接收方和发送由企业微信客户端交互决定 |
| 企业业务小程序入口 | 分享已与企业应用关联的小程序卡片,可指定页面和本地预览图 |
| 客户现场排查 | 一次复现后复制完整脱敏报告,核对包身份、SDK/宿主版本、操作与原生诊断 |
本插件不提供H5/扫码登录、服务商代开发SSO、企业群发接口、微信朋友圈、客户联系人自动选择或后台代发消息。Harmony、Web和小程序不提供上述原生业务;导入后的业务调用返回明确不支持错误。
下载与导入
| 步骤 | 操作 |
|---|---|
| 保留完整源码 | 将完整uni_modules/lizhao-wecom/导入项目,不单独拷贝平台index文件 |
| 使用根入口 | import { initialize, login } from '@/uni_modules/lizhao-wecom',不导入utssdk内部文件 |
| uni-app示例 | 注册uni_modules/lizhao-wecom/example/uniapp/index.vue;使用Vue2/Vue3通用选项式API |
| uni-app x示例 | 注册uni_modules/lizhao-wecom/example/uniappx/index.uvue;当前主验证模式为Vapor |
| Android依赖 | 固定Maven依赖在uni_modules/lizhao-wecom/utssdk/app-android/config.json;仓储通过构建阶段解析,不在运行时下载SDK |
| iOS依赖 | 固定CocoaPods依赖在uni_modules/lizhao-wecom/utssdk/app-ios/config.json;SDK归档从腾讯官方地址解析 |
| 原生前提 | 增加SDK/UTS原生实现后,重新原生联编或打自定义基座,普通资源/WGT更新不能补齐旧基座原生代码 |
在企业微信管理后台建立企业内部自建应用并开启移动端授权,取得企业corpId、应用agentId及Android/iOS各自的scheme。Android后台包名和签名必须与实际APK一致;iOS后台Bundle ID必须与实际应用一致。scheme使用后台原值,不能自行拼接。
iOS还须把该真实scheme注册到宿主URL Types。uni_modules/lizhao-wecom/utssdk/app-ios/Info.plist仅内置安装查询白名单,不填虚构企业scheme。按项目现有iOS配置合并自己的URL Scheme,不能覆盖其他登录或支付插件的条目。插件通过UTS Hook转交回跳,不需要更改客户真实业务调用路径;完整回跳链仍须用匹配包实测。
从基础到进阶:按业务模块使用
模块一:初始化并取得授权码
以下函数使用真实回调接口,参数由业务配置传入。serverUrl是用户自有HTTPS登录接口(需自行部署),企业Secret/access_token只保留在该后端。
import { initialize, login } from '@/uni_modules/lizhao-wecom'
export function authorizeEnterprise(corpId: string, agentId: string, scheme: string, serverUrl: string): void {
initialize({
corpId: corpId, agentId: agentId, scheme: scheme,
success: () => {
login({
timeoutMs: 120000,
success: (result) => {
// 只交给业务后端;不把code/state打印或写进复制日志。
uni.request({
url: serverUrl, method: 'POST',
data: { code: result.code, state: result.state, corpId: corpId },
success: (reply) => { console.log('后端已响应,请按业务合同处理状态码', reply.statusCode) },
fail: (error) => { console.error('业务后端请求失败', error.errMsg) }
})
},
fail: (error) => { console.error(error.errSubject, error.errCode, error.errMsg) },
complete: (result) => { console.log('授权调用结束', result.requestId, result.status) }
})
},
fail: (error) => { console.error(error.errSubject, error.errCode, error.errMsg) }
})
}
后端先使用企业凭据取得企业access_token,再携带code请求企业微信获取用户信息接口,核对业务成员和事务后签发自有会话。取得code或HTTP200都不等于业务已经登录成功。若后端要求绑定自己的登录事务,传入后端生成的一次性随机state并在服务端独立校验;客户端缺省state由原生安全随机源产生,仅用于本次SDK回执关联。
模块二:分享链接并观察真实回执
import { shareLink, onShareResult, offShareResult, cancelRequest } from '@/uni_modules/lizhao-wecom'
import { WeComShareResult } from '@/uni_modules/lizhao-wecom'
export function sendEnterpriseLink(url: string, title: string): string {
let requestId = ''
const listener = (result: WeComShareResult): void => {
if (result.requestId != requestId) return
console.log('真实SDK回执', result.status, result.errCode)
offShareResult(listener)
}
onShareResult(listener)
requestId = shareLink({
url: url, title: title,
success: (result) => { console.log('已提交企业微信', result.requestId, result.stage) },
fail: (error) => { offShareResult(listener); console.error(error.errCode, error.errMsg) },
complete: (result) => { console.log('提交调用结束', result.status) }
})
// 页面离开时:offShareResult(listener),并调用cancelRequest(requestId)停止本地观察。
// 无真实回执时,最终结果应显示未知;不要凭App返回前台显示“分享成功”。
return requestId
}
同一SDK通道存在请求或分享观察时,新业务请求返回忙碌错误。需要继续下一项时,等待回执/观察结束,或显式调用cancelRequest停止旧观察;停止观察不会撤回已经提交的内容。
模块三:文件、小程序与生命周期
Android文件支持可读content URI并读取真实DISPLAY_NAME,不要求另一插件把URI猜成文件路径。图片/视频可先用宿主选择API取得本地临时路径;文件来源不足或无访问权限时明确失败。调用方负责保持源文件在提交期间可读,不删除客户原件。
import { shareFile, shareMiniProgram, release, getDiagnosticsSnapshot } from '@/uni_modules/lizhao-wecom'
export function sendExistingFile(filePath: string, fileName: string): string {
return shareFile({ filePath: filePath, fileName: fileName,
success: (result) => { console.log('文件提交已受理', result.requestId) },
fail: (error) => { console.error(error.errCode, error.errMsg) }
})
}
export function sendAssociatedMiniProgram(userName: string, path: string, title: string): string {
return shareMiniProgram({ userName: userName, path: path, title: title,
success: (result) => { console.log('小程序提交已受理', result.requestId) },
fail: (error) => { console.error(error.errCode, error.errMsg) }
})
}
export function disposeEnterpriseModule(): void {
release({
success: () => { console.log('本模块可释放资源已处理') },
fail: (error) => { console.error('释放未完全成功', error.errCode, error.errMsg) },
complete: () => { const snapshot = getDiagnosticsSnapshot(); console.log('保留诊断条数', snapshot.entries.length) }
})
}
双宿主完整页面及复制路径见uni_modules/lizhao-wecom/example/uniapp/index.vue、uni_modules/lizhao-wecom/example/uniappx/index.uvue。示例所有外部操作都由用户点击,不自动登录或发送资料。
API 用途速查
| API | 用途 | 返回 |
|---|---|---|
| initialize | 注册企业配置 | void,回调结果 |
| getCapabilitiesSync | 安装、平台、SDK及回执能力 | WeComCapabilities |
| openApp | 请求打开企业微信 | void,回调仅表示打开受理 |
| login | 授权并交付一次性code/state | 请求ID,结果通过回调 |
| shareText | 文本提交 | 请求ID |
| shareImage | 图片提交 | 请求ID |
| shareFile | 文件提交 | 请求ID |
| shareVideo | 视频提交 | 请求ID |
| shareLink | 网页链接卡片提交 | 请求ID |
| shareMiniProgram | 关联小程序卡片提交 | 请求ID |
| onShareResult | 注册实际SDK分享回执监听 | void,同函数不重复注册 |
| offShareResult | 移除同一监听函数 | void |
| cancelRequest | 停止本地请求/观察 | WeComCancelResult |
| release | 终止等待并释放本模块资源 | void,失败保留真实原因 |
| setDiagnosticsEnabled | 控制深度日志,关键错误仍保留 | void |
| getDiagnosticsSnapshot | 读取独立脱敏快照 | WeComDiagnosticsSnapshot |
参数、默认值和限制
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| initialize.corpId | string | 是 | 企业ID,非空 | 无 | 无 |
| initialize.agentId | string | 是 | 数字字符串 | 无 | 无 |
| initialize.scheme | string | 是 | 本平台后台生成的合法URL Scheme原值 | 无 | 无 |
| login.state | string/null | 否 | 非空一次性值,最多1024个UTF-8字节;回执精确匹配 | 原生安全随机 | 业务事务随机值 |
| login.timeoutMs | number/null | 否 | 毫秒整数,10000–300000 | 120000 | 范围内整数 |
| share.timeoutMs | number/null | 否 | 文件读取/准备/SDK受理总预算,毫秒整数1000–120000 | 30000 | 范围内整数 |
| share.receiptTimeoutMs | number/null | 否 | 受理后独立观察窗口,毫秒整数10000–300000 | 120000 | 范围内整数 |
| shareText.text | string | 是 | 非空,插件保护上限10240个UTF-8字节 | 无 | 无 |
| filePath | string | 文件类是 | 本地/file URI/uni资源路径;content URI仅Android且可读 | 无 | 真实文件来源 |
| fileName | string/null | 否 | 合法叶文件名;省略读取真实元数据,不猜URI尾段 | 真实文件名 | 255个UTF-8字节以内 |
| shareLink.url | string | 是 | HTTP(S)链接,最多8192个UTF-8字节 | 无 | 无 |
| shareLink.title | string | 是 | 非空,最多512个UTF-8字节 | 无 | 无 |
| shareLink.summary | string/null | 否 | 最多1024个UTF-8字节 | 不传 | 空摘要 |
| shareLink.thumbnailPath | string/null | 否 | 本地图片,最多32768字节;显式图片不静默压缩 | 不传 | 本地路径 |
| shareMiniProgram.userName | string | 是 | 关联小程序原始ID,含@app后缀 | 无 | 无 |
| shareMiniProgram.path | string/null | 否 | 原始页面路径,最多4096个UTF-8字节,不预先URL编码 | 默认页面 | 指定页面 |
| shareMiniProgram.title | string | 是 | 非空,最多512个UTF-8字节 | 无 | 无 |
| shareMiniProgram.previewImagePath | string/null | 否 | 本地预览图,最多131072字节;显式图片不压缩 | 真实宿主应用图标 | 本地路径 |
| success/fail/complete | function | 否 | 异步派发;success/fail互斥,complete跟随且各至多一次 | 无 | 见结果说明 |
| onShareResult/offShareResult.listener | function | 是 | 保存同一函数以解除监听 | 无 | WeComShareResultListener |
| cancelRequest.requestId | string | 是 | 本插件返回的请求编号 | 无 | 无 |
| setDiagnosticsEnabled.enabled | boolean | 是 | 仅深度日志开关,不清空已有诊断 | false | true/false |
超时可选参数的null与省略相同;NaN、无穷、小数、越界或错误类型不能用默认值掩盖。文件类资源保护上限100MiB,这是插件策略。Android上游文本限制按UTF-16字符计数,插件为跨端保护收紧到UTF-8字节;不要把插件限制误解为全部SDK的原始限制。
返回、事件与诊断
能力快照中,六类分享的available同时检查初始化、客户端安装与最低SDK接口能力;reason说明不可用原因。loginSupported表示当前原生SDK接口能力,业务成员身份由后端继续验证。
登录成功包含requestId/platform/code/state/elapsedMs。code/state只在该回调交付,不进入complete、错误或诊断。complete包含errSubject/errCode/errMsg/operation/requestId/stage/status/elapsedMs,其中status描述这次本地API调用终态。
分享成功包含requestId/shareType/stage=dispatched/receiptSupport/elapsedMs。最终事件包含requestId/shareType/source=sdkResponse/status/errCode/error;confirmed仅代表SDK确认,不保证收件人收到或阅读。没有可靠关联的回应时不发布假事件,快照观察状态为unknown。
取消结果包含cancelled/scope/externalResult,scope为request、receipt或none。错误对象在统一字段外保留stage/operation/requestId/externalResult/nativeCode/nativeType/nativeMessage/nativeCause/nativeStack,原生字段无法采集时为null;原生错误码和插件错误码分开保存。
诊断返回独立快照,保留原始错误语义、时间、级别、模块、关联编号和耗时,限制500条/524288个UTF-8字节并显式计数丢弃/截断。深度日志关闭仍保留关键操作与错误。复制报告来自固定快照;系统复制API成功回执与实际剪贴板回读是不同验证层次。
错误码说明
统一errSubject='lizhao-wecom'。SDK原生码在nativeCode中,不能直接当作下表插件错误码。取消、超时与结果未知不代表外部操作已撤销。
| 错误码 | 含义 | 建议 |
|---|---|---|
| 9359001 | 参数无效 | 按参数表修正类型、范围和必填值 |
| 9359002 | 当前平台不支持 | 只在已适配App端使用原生业务 |
| 9359003 | 未初始化 | 先完成initialize |
| 9359004 | 企业/回跳配置无效 | 核对后台、实际包身份与注册scheme |
| 9359005 | 未安装企业微信 | 安装并登录客户端后重试 |
| 9359006 | 客户端能力不足 | 升级客户端并查看能力快照 |
| 9359007 | 已有请求/观察 | 等待终态,或停止旧本地观察 |
| 9359008 | SDK注册失败 | 核对配置与原生诊断 |
| 9359009 | SDK未受理请求 | 不提示成功,查看原生原因 |
| 9359010 | 用户拒绝授权 | 仅在SDK可区分拒绝时使用,不盲目重试 |
| 9359011 | 用户取消操作 | 真实SDK取消,允许用户重新发起 |
| 9359012 | 本地等待取消 | 外部界面/发送未被撤销 |
| 9359013 | 操作超时 | 已发出的操作可能结果未知,以externalResult为准 |
| 9359014 | state不匹配 | 该回执被隔离,原合法请求继续等待 |
| 9359015 | 文件不存在/不可访问 | 保持实际URI权限和源文件可读 |
| 9359016 | 读取/临时副本失败 | 核对空间、权限和原生原因 |
| 9359017 | 格式/容量限制 | 准备合法格式和限制内资源 |
| 9359018 | SDK返回失败 | 查看nativeCode与脱敏原生详情 |
| 9359019 | 原生桥接/回执无效 | 复制完整诊断,核对匹配原生包 |
| 9359020 | 释放终止本地请求 | 不视作外部操作已撤销 |
| 9359021 | 编号不存在/已结束 | 取消返回false,不影响其他请求 |
| 9359022 | 资源释放失败 | 不提示全部释放成功,保留报告排查 |
注意事项
发布兼容性状态
| 宿主与运行方式 | Android | iOS |
|---|---|---|
| uni-app Vue2/Vue3、App vue | 支持 | 待确认,需新云包及匹配基座验收 |
| uni-app x(已验证Vapor集成) | 支持 | 待确认,需新云包及匹配基座验收 |
Vapor兼容性声明为支持。nvue、Harmony、Web、小程序和云端不提供企业微信原生业务。平台集成支持不代表无需企业后台配置即可登录,也不代表分享已送达;真实企业应用、账号及最终回执仍需接入方验收。标题中的iOS表示提供对应实现,当前发布兼容性保留待确认。
- 宿主目标为uni-app Vue2/Vue3和uni-app x;Android目标API21起、iOS目标12起,实际最低要求还受当前宿主和依赖限制。Harmony、Web、小程序不提供原生登录/分享,不能因这些端可导入就标为业务支持。
- 当前Windows可以核对资源生成、Android原生与依赖;Apple SwiftCompile/链接、完整匹配宿主回跳和真实企业微信账号验收必须分别取得证据,不能用本地资源导出代替。候选源码不代表已完成全部宿主/设备验收。
- Android只使用正常网络权限和精确包查询,不请求全盘文件、通讯录、定位或电话权限。content URI需要调用方已经持有合法读取许可;插件不会为了日志额外申请无关权限。
- iOS需要URL查询白名单和宿主真实回跳scheme。iOS SDK没有unregister方法,release只清本模块会话、回调与本地配置,不承诺撤销SDK全局注册。Android实际detach与本模块会话清理分别处理。
uni_modules/lizhao-wecom/utssdk/app-ios/PrivacyInfo.xcprivacy按Apple官方用途说明声明系统单调时钟用于应用内请求耗时和计时器(35F9.1)。报告仅保留本次操作的耗时,不输出原始系统启动时间;该清单不代替接入方对企业微信SDK及整个App数据处理的隐私说明。最终合并结果须在Apple归档中核对。- 显式图片不静默压缩;默认小程序图取真实宿主图标,读取或准备失败会返回真实错误。远程文件不在插件内自动下载;代码包静态资源由平台官方路径接口解析,实际原生可读性仍会检查。
- SDK受理后的文件可能仍被外部消费,取消/释放不会立即删除仍需保留的自有副本。缓存有条数/体积/有效期边界,诊断会记录保留与清理;不删除调用方原件,不把本地清理称为撤回分享。
- 用户主动授权/分享时,官方SDK向企业微信客户端传递必要授权参数或所选分享内容。请在业务隐私政策披露SDK用途与腾讯规则:企业微信登录/分享SDK个人信息保护规则。插件不接收企业Secret/access_token,不默认上传客户日志。
- 诊断必须去除授权码、state、Token、Cookie、个人信息、客户文件内容及敏感路径。请通过示例底部完整报告提供故障信息,避免把原始账号凭据或客户文件发到聊天/代码库。
- 增删UTS原生代码、SDK依赖或平台配置后,必须重新原生联编或制作对应自定义基座。仅更新页面资源或WGT不能修复旧基座缺少SDK/入口类的问题。
作者系列 UTS 插件
下表来自项目统一的已发布作者插件清单;当前企业微信候选不加入已上架列表。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-alipay-kit |
支付宝授权登录、App 支付与脱敏诊断 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-camera-pro |
原生相机、拍照录像、水印与媒体保存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-hce-card |
NFC 虚拟卡、APDU 交互与 NDEF 标签模拟 | 查看插件 |
lizhao-health |
健康数据授权、查询、统计与写入 | 查看插件 |
lizhao-http-server |
本地 HTTP 服务、文件传输与实时通信 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-id-photo |
证件照制作、尺寸换算、换底色与模板换装 | 查看插件 |
lizhao-img-eraser |
图片去水印、局部修复与原生编辑器 | 查看插件 |
lizhao-live-activity |
实时活动、系统胶囊与普通通知降级 | 查看插件 |
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-notify-pro |
本地通知、点击动作、进度与定时提醒 | 查看插件 |
lizhao-novel-reader |
原生小说阅读、仿真翻页与段落评论 | 查看插件 |
lizhao-office-view |
Office 与 PDF 文件预览、进度与缓存管理 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-tcp-pro |
TCP 客户端、服务端、多连接与诊断 | 查看插件 |
lizhao-usb-storage |
U 盘、移动硬盘文件浏览、读写与批量复制 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-video-feed |
短视频上下滑、短剧选集与分页加载 | 查看插件 |
lizhao-video-player |
原生视频播放器、清晰度与播放交互 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6486
赞赏 5
下载 12727711
赞赏 1958
赞赏
京公网安备:11010802035340号