更新记录
1.0.0(2025-09-30)
支持iOS、安卓、鸿蒙平台 企业微信授权登录
平台兼容性
uni-app(4.36)
Vue2 | Vue2插件版本 | Vue3 | Vue2插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
√ | 1.0.0 | √ | 1.0.0 | × | × | √ | 1.0.0 | √ | 1.0.0 | 5.0 | 1.0.0 | 12 | 1.0.0 | 10 | 1.0.0 |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.36)
Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 | 微信小程序 |
---|---|---|---|---|---|---|---|---|
× | × | 5.0 | 1.0.0 | 12 | 1.0.0 | 10 | 1.0.0 | × |
tt-wechat-work
🚀 企业SDK插件,为 uni-app x & uni-app 提供企业授权登录功能
📖 目录
📚 推荐阅读: 企业***官方集成文档
🚨 重要提示
⚠️ 必须使用自定义基座运行,否则无法找到插件方法
环境配置
前置条件
- 在企业***开放平台申请企业应用
- 获取
corpId
(企业ID)和agentId
(应用ID) - 配置应用包名和签名
iOS平台配置
1. 配置 URL Scheme
修改插件目录下的 uni_modules/tt-wechat-work/utssdk/app-ios/Info.plist
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>wechatwork</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- 填写您的scheme -->
<string>你所注册的应用程序获得的scheme</string>
</array>
</dict>
</array>
</dict>
</plist>
💡 配置说明:
- 将
"你所注册的应用程序获得的scheme"
替换为您的实际企业***应用Scheme- 此配置会自动合并到项目的Info.plist中
Android平台配置
Android平台会自动完成相关配置,确保在企业***开放平台正确配置应用包名和签名即可。
HarmonyOS平台配置
1. 配置 module.json5
⚠️ 重要提示: 由于 harmony-configs/entry/src/main/module.json5
会完全替换默认配置,需要提供完整的配置文件。
在项目的 harmony-configs/entry/src/main/module.json5
文件中使用以下完整配置:
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"phone",
"tablet",
"2in1"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"querySchemes": [
"https",
"wxworkapi"
],
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
],
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
💡 配置说明:
- 必须使用完整配置:
module.json5
会覆盖默认配置,不能只添加部分字段- 关键添加项:
querySchemes
数组包含"https"
和"wxworkapi"
- 保留默认配置: 其他配置项保持与默认模板一致
快速开始
1. 导入插件
import * as wxwork from "@/uni_modules/tt-wechat-work";
export default {
data() {
return {
weChatWork: null as wxwork.TTWeChatWorkSDK | null,
}
},
onLoad() {
// 初始化企业***SDK实例
this.weChatWork = wxwork.getTTWeChatWorkSDK()
// 注册企业***SDK
this.initWeChatWorkSDK()
},
methods: {
// 初始化企业***SDK
initWeChatWorkSDK() {
// SDK初始化代码见下方
}
}
}
2. 初始化 SDK
initWeChatWorkSDK() {
if (!this.weChatWork) {
console.error('企业***SDK初始化失败')
return
}
this.weChatWork.register({
scheme: "您的应用Scheme", // 必填:第三方App的Scheme
corpId: "您的企业ID", // 必填:企业***企业ID
agentId: "您的应用ID", // 必填:企业***企业应用ID
success: (e) => {
console.log("✅ 企业***SDK初始化成功");
// 可以在这里进行后续操作,如检测企业***是否安装
this.checkWeChatWorkInstalled()
},
fail: (err) => {
console.error("❌ 企业***SDK初始化失败:", err);
uni.showToast({
title: '企业***SDK初始化失败',
icon: 'error'
})
}
} as wxwork.TTWeChatWorkRegisterOptions);
}
功能介绍
企业***授权登录
💡 企业***登录是一个两步过程:先获取code,再通过后端接口换取用户信息
第一步:获取授权码 (code)
参数说明
TTWeChatWorkLoginOptions
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
state | string | 否 | 请求唯一标识,原样返回,长度不超过1K |
返回值 TTWeChatWorkLoginSuccess
参数 | 类型 | 说明 |
---|---|---|
code | string | 用于换取access_token的授权码 |
state | string | 原样返回的标识符 |
示例代码
// 检测企业***是否安装
checkWeChatWorkInstalled() {
const isInstalled = this.weChatWork?.isInstall()
if (!isInstalled) {
uni.showModal({
title: '提示',
content: '请先安装企业***客户端',
showCancel: false
})
return false
}
return true
}
// 企业***授权登录
handleWeChatWorkLogin() {
// 先检查企业***是否安装
if (!this.checkWeChatWorkInstalled()) {
return
}
this.weChatWork?.login({
state: Date.now().toString(), // 使用时间戳作为唯一标识
success: (result) => {
console.log("✅ 获取授权码成功:", result.code);
// 将code发送到后端服务器
this.sendCodeToServer(result.code)
},
fail: (error) => {
console.error("❌ 企业***授权失败:", error);
uni.showToast({
title: '授权失败',
icon: 'error'
})
}
} as wxwork.TTWeChatWorkLoginOptions)
}
// 发送code到后端服务器
sendCodeToServer(code: string) {
uni.request({
url: 'https://your-server.com/api/wechatwork/login',
method: 'POST',
data: { code },
success: (res) => {
// 处理登录成功逻辑
console.log('登录成功:', res.data)
},
fail: (err) => {
console.error('登录请求失败:', err)
}
})
}
第二步:后端换取用户信息
📖 详细流程请参考: 企业***授权后接口调用文档
后端需要完成的步骤:
- 使用code换取access_token
- 使用access_token获取用户信息
- 返回用户信息给前端
错误处理
错误码说明
错误码 | 错误信息 | 适用场景 | 解决方案 |
---|---|---|---|
基础错误 | |||
101 | 未安装企业*** | 所有功能 | 提示用户安装企业***客户端 |
102 | SDK未初始化或初始化失败 | 所有功能 | 检查SDK初始化参数,重新注册 |
登录错误 | |||
201 | 未注册SDK,请检查初始化流程 | 登录功能 | 确保先调用register方法 |
202 | 序列化数据为空,请检查sessionKey是否正确设置 | 登录功能 | 检查登录参数配置 |
203 | 调用OpenURL打开应用失败 | 登录功能 | 检查URL Scheme配置 |
204 | 登录取消 | 登录功能 | 用户主动取消登录 |
其他错误 | |||
999 | 其他错误 | 所有功能 | 查看企业***原始错误码和详细信息 |
1000 | 暂不支持 | 所有功能 | 当前平台不支持此功能 |
错误处理最佳实践
// 统一错误处理函数
handleWeChatWorkError(error: any, action: string) {
console.error(`❌ ${action}失败:`, error)
// 获取错误码和错误信息
const errCode = error.errCode || error.code
const errMsg = error.errMsg || error.message
switch(errCode) {
case 101:
uni.showModal({
title: '企业***未安装',
content: '请先安装企业***客户端后再试',
showCancel: false,
confirmText: '知道了'
})
break
case 102:
uni.showModal({
title: 'SDK初始化失败',
content: '请检查企业***corpId和agentId配置是否正确',
showCancel: false
})
break
case 201:
uni.showToast({
title: '请先初始化SDK',
icon: 'error'
})
break
case 202:
uni.showToast({
title: '登录参数配置错误',
icon: 'error'
})
break
case 203:
uni.showToast({
title: 'URL Scheme配置错误',
icon: 'error'
})
break
case 204:
// 用户取消登录,不显示错误提示
console.log('用户取消登录')
break
case 999:
// 其他错误,显示具体错误信息
uni.showToast({
title: errMsg || '操作失败',
icon: 'error'
})
break
case 1000:
uni.showToast({
title: '当前平台不支持此功能',
icon: 'error'
})
break
default:
// 企业***SDK原始错误,可能是用户取消等
if (errMsg && errMsg !== '用户取消') {
uni.showToast({
title: errMsg,
icon: 'error'
})
}
break
}
}
// 使用示例
this.weChatWork?.login({
state: Date.now().toString(),
success: (result) => {
console.log('登录成功:', result)
},
fail: (error) => {
this.handleWeChatWorkError(error, '企业***登录')
}
} as wxwork.TTWeChatWorkLoginOptions)
常见问题
1. 找不到插件方法?
解决方案: 确保使用自定义基座运行,标准基座不包含原生插件。
2. iOS平台登录无响应?
解决方案:
- 检查插件目录下
uni_modules/tt-wechat-work/utssdk/app-ios/Info.plist
中的 URL Scheme 配置 - 确认企业***应用Scheme配置正确
- 验证企业***开放平台的应用配置
3. Android平台功能异常?
解决方案:
- 确认应用签名与企业***开放平台配置一致
- 检查包名是否正确
- 确保企业***客户端版本支持相关功能
4. HarmonyOS平台问题?
常见问题:
- 配置不完整: 只添加了
querySchemes
导致应用无法正常运行 - 功能异常: SDK初始化失败
解决方案:
- 在正确路径
harmony-configs/entry/src/main/module.json5
创建配置文件 - 使用文档提供的完整
module.json5
模板配置 - 确认
querySchemes
数组包含"https"
和"wxworkapi"
- 检查所有默认配置项是否保留(abilities、permissions等)
5. 登录失败?
解决方案:
- 确保企业***客户端已安装
- 检查corpId和agentId是否正确
- 验证应用包名和签名配置
- 确认网络连接正常
📞 技术支持
如果在使用过程中遇到问题,请:
- 查阅上方常见问题
- 参考企业***官方开发文档
- 检查配置是否正确
- 确认企业***客户端版本
祝您开发愉快! 🎉