更新记录
1.0.0(2025-10-24)
支持双端钉钉授权登录
平台兼容性
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 | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.36)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | 12 | 1.0.0 | × | × |
tt-dingtalk-oauth
🚀 钉钉授权登录SDK插件,为 uni-app x & uni-app 提供完整的钉钉集成解决方案
📖 目录
SDK版本信息
| 平台 | 版本 | 支持状态 |
|---|---|---|
| iOS | 0.0.1.6 | ✅ 完全支持 |
| Android | 1.5.0.10 | ✅ 完全支持 |
功能支持矩阵
| 功能 | iOS | Android |
|---|---|---|
| 钉钉登录 | ✅ | ✅ |
📚 推荐阅读: iOS 应用授权登录接入流程 Android应用授权登录接入流程
🚨 重要提示
⚠️ 必须使用自定义基座运行,否则无法找到插件方法
⚠️ 测试前需确保应用已通过钉钉开放平台审核
⚠️ 需要先调用 register 接口注册 appId,然后才能进行登录操作
环境配置
前置条件
- 在钉钉开放平台申请移动应用
- 获取
AppID - 配置应用包名和签名
- 配置回调域名
iOS平台配置
1. 配置 URL Scheme
编辑插件内的 uni_modules/tt-dingtalk-oauth/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>dingtalk</string>
<key>CFBundleURLSchemes</key>
<array>
<string>此处填写您应用的ClientID</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>dingtalk</string>
<string>dingtalk-openauth</string>
<string>dingtalk-openauth2</string>
</array>
</dict>
</plist>
Android平台配置
Android平台会自动完成相关配置,确保在钉钉开放平台正确配置应用包名和签名即可。
快速开始
1. 导入插件
uni-app x 版本
import * as dingTalkSDK from "@/uni_modules/tt-dingtalk-oauth";
export default {
data() {
return {
dingTalk: null as dingTalkSDK.TTDingTalkOauth | null,
}
},
onLoad() {
// 初始化钉钉SDK实例
this.dingTalk = dingTalkSDK.getTTDingTalkOauth()
// 注册钉钉SDK
this.initDingTalkSDK()
},
methods: {
// 初始化钉钉SDK
initDingTalkSDK() {
// SDK初始化代码见下方
}
}
}
uni-app 版本
import * as dingTalkSDK from "@/uni_modules/tt-dingtalk-oauth";
export default {
data() {
return {
dingTalk: dingTalkSDK.TTDingTalkOauth,
}
},
onLoad() {
// 初始化钉钉SDK实例
this.dingTalk = dingTalkSDK.getTTDingTalkOauth()
// 注册钉钉SDK
this.initDingTalkSDK()
},
methods: {
// 初始化钉钉SDK
initDingTalkSDK() {
// SDK初始化代码见下方
}
}
}
2. 初始化 SDK
uni-app x 版本
initDingTalkSDK() {
if (this.dingTalk == null) {
console.error('钉钉SDK初始化失败')
return
}
this.dingTalk.register({
appId: "您的钉钉AppID", // 必填:钉钉开放平台申请的AppID
success: (e) => {
console.log("✅ 钉钉SDK初始化成功");
// 可以在这里进行后续操作
},
fail: (err) => {
console.error("❌ 钉钉SDK初始化失败:", err);
uni.showToast({
title: '钉钉SDK初始化失败',
icon: 'error'
})
}
} as dingTalkSDK.TTDingTalkOauthRegisterOptions);
}
uni-app 版本
initDingTalkSDK() {
if (this.dingTalk == null) {
console.error('钉钉SDK初始化失败')
return
}
this.dingTalk.register({
appId: "您的钉钉AppID", // 必填:钉钉开放平台申请的AppID
success: (e) => {
console.log("✅ 钉钉SDK初始化成功");
// 可以在这里进行后续操作
},
fail: (err) => {
console.error("❌ 钉钉SDK初始化失败:", err);
uni.showToast({
title: '钉钉SDK初始化失败',
icon: 'error'
})
}
});
}
功能介绍
钉钉授权登录
💡 钉钉登录是一个两步过程:先获取code,再通过后端接口换取用户信息
第一步:获取授权码 (code)
参数说明
TTDingTalkOauthOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| redirectUrl | string | ✅ | 回调域名,需要与创建应用时填写的回调域名保持一致 |
| scope | string | ✅ | 应用授权作用域。支持:"openid" 或 "openid corpid" |
| state | string | 否 | 用于保持请求和回调的状态,授权请求后原样带回给第三方 |
返回值 TTDingTalkOauthSuccess
| 参数 | 类型 | 说明 |
|---|---|---|
| code | string | 用于换取access_token的授权码 |
| state | string | 原样返回的标识符 |
示例代码
// 钉钉授权登录
handleDingTalkLogin() {
this.dingTalk?.login({
redirectUrl: "https://your-domain.com/callback", // 回调域名
scope: "openid corpid", // 授权范围:openid 或 openid corpid
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 dingTalkSDK.TTDingTalkOauthOptions)
}
// 发送code到后端服务器
sendCodeToServer(code: string) {
uni.request({
url: 'https://your-server.com/api/dingtalk/login',
method: 'POST',
data: { code },
success: (res) => {
// 处理登录成功逻辑
console.log('登录成功:', res.data)
},
fail: (err) => {
console.error('登录请求失败:', err)
}
})
}
第二步:后端换取用户信息
📖 详细流程请参考: 获取用户个人access_token 获取用户个人信息
后端需要完成的步骤:
- 使用code换取access_token
- 使用access_token获取用户信息
- 返回用户信息给前端
错误处理
错误码说明
| 错误码 | 错误信息 | 适用场景 | 解决方案 |
|---|---|---|---|
| 基础错误 | |||
| 101 | SDK未初始化或初始化失败 | 所有功能 | 检查SDK初始化参数,重新注册 |
| 其他错误 |||| | 999 | 其他错误 | 所有功能 | 查看钉钉原始错误码和详细信息 | | 1000 | 暂无支持 | 所有功能 | 当前平台不支持此功能 |
常见问题
1. 找不到插件方法?
解决方案: 确保使用自定义基座运行,标准基座不包含原生插件。
2. iOS平台登录无响应?
解决方案:
- 检查
uni_modules/tt-dingtalk-oauth/utssdk/app-ios/Info.plist中的 URL Scheme 配置 - 确认钉钉开放平台的 iOS 应用配置
- 验证回调域名配置
3. Android平台功能异常?
解决方案:
- 确认应用签名与钉钉开放平台配置一致
- 检查包名是否正确
- 确保钉钉客户端版本支持相关功能
4. 授权登录失败?
解决方案:
- 确保已先调用
register接口注册appId - 检查
redirectUrl是否与钉钉开放平台配置一致 - 验证
scope参数是否正确
5. 回调域名配置问题?
解决方案:
- 在钉钉开放平台正确配置回调域名
- 确保回调域名可以正常访问
- 回调域名需要与代码中的
redirectUrl完全一致
6. 获取不到授权码?
解决方案:
- 确认用户是否已授权
- 验证
appId是否正确 - 检查网络连接是否正常
📞 技术支持
如果在使用过程中遇到问题,请:
- 查阅上方常见问题
- 参考钉钉开放平台开发文档
- 检查配置是否正确
- 确认钉钉客户端版本
祝您开发愉快! 🎉

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 115
赞赏 1
下载 10630807
赞赏 1792
赞赏
京公网安备:11010802035340号