更新记录
2.0.20250401(2025-04-01)
更新预览截图
2.0.6(2025-03-31)
更新README
2.0.5(2025-03-31)
更新README
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.6.8,Android:5.0,iOS:10,HarmonyNext:不支持 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
前提准备(获取钉钉appid与开启分享参照文档末尾官方文档操作)
- Andoird包名
- IOS包名(Bundle Id)
- 钉钉appId (别名Client Id)
- redirectUri(钉钉应用后台设置的Uri)
Android (1) 修改AndroidManifest.xml
修改uni_modules/cms-dingding/utssdk/app-android/AndroidManifest.xml中的包名为自己的Android包名

Android (2)修改DDAuthActivity.kt/DDShareActivity.kt
- (试用/非源码版步骤)点击下载Kotlin代码压缩包
- (试用/非源码版步骤)将压缩包内的DDAuthActivity.kt/DDShareActivity.kt文件参照下方步骤放在对应位置
- 修改uni_modules/cms-dingding/utssdk/app-android/ddauth/DDAuthActivity.kt中的包名为自己的Android包名

- 修改uni_modules/cms-dingding/utssdk/app-android/ddauth/DDShareActivity.kt中的包名为自己的Android包名

Android (3)打包自定义基座包确保andorid包名与上面修改的一致
IOS (1)修改Info.plist
- 修改uni_modules/cms-dingding/utssdk/app-ios/Info.plist替换钉钉AppId
上述配置完毕后制作自定义基座包继续下方操作
初始化SDK(后续授权和分享都需在此步之后)
import {
dingSdkInit
} from '@/uni_modules/cms-dingding';
// 初始化钉钉SDK
dingSdkInit({
appId: "此处填写你的Client ID",
redirectUri: "此处填写你的redirectUri",
bundleId: "此处填写你的bundleId(IOS包名)",
responseType: "code",
scope: "openid",
state: "state",
prompt: "consent",
})
授权
若未安装钉钉时会以H5方式授权
import {
dingAuth,
} from '@/uni_modules/cms-dingding';
dingAuth({
success: code => {
console.log('success:', code)
},
fail: (error, state) => {
console.log('fail:', error, state)
}
});
分享文本
sendTextMessage({
data: "hello",
success(errCode, errMsg) {
console.log("sendTextMessage success",errCode, errMsg);
},
fail(errCode, errMsg) {
console.log("sendTextMessage fail", errCode, errMsg);
}
})
方法/结构
// 分享入参
export type BaseShareOption = {
data : string;
success ?: (errCode : number, errMsg : string) => void;
fail ?: (errCode : number, errMsg : string) => void;
}
// 发送网页链接Opiton
export type SendWebPageOptions = {
url : string;
title : string;
content : string;
thumbUrl : string;
success ?: (errCode : number, errMsg : string) => void;
fail ?: (errCode : number, errMsg : string) => void;
}
// 钉钉初始化Option
export type SetDingSdkOption = {
appId : string;
redirectUri : string;
responseType ?: string;
scope ?: string;
state ?: string;
prompt ?: string;
bundleId ?: string;
}
// 授权入参
export type DingAuthOption = {
success ?: (res : string) => void;
fail ?: (error : string, msg : string) => void;
}
// 初始化钉钉SDK
export type DingSdkInit = (opt : SetDingSdkOption) => void;
// 授权
export type DingAuth = (opt : DingAuthOption) => void;
// 是否安装钉钉
export type IsDingtalkInstalled = () => Boolean;
// 是否支持分享
export type IsDDSupportAPI = () => Boolean;
// 分享文本消息
export type SendTextMessage = (opt : BaseShareOption) => void;
// 分享本地图片
export type SendLocalImage = (opt : BaseShareOption) => void;
// 分享Base64图片
export type SendBase64Image = (opt : BaseShareOption) => void;
// 分享在线图片
export type SendOnlineImage = (opt : BaseShareOption) => void;
// 发送网页消息
export type SendWebPageMessage = (opt : SendWebPageOptions) => void;
完整示例代码
<template>
<view style="padding-top: 300rpx;">
<button type="primary" @click="isDingtalkInstalled">是否安装钉钉</button>
<button type="primary" @click="isDDSupportAPI">钉钉是否可分享</button>
<button type="primary" @click="dingAuth">授权登录</button>
<button type="primary" @click="sendTextMessage">分享文字</button>
<button type="primary" @click="sendBase64Image">分享base64图片(图片过大会失败)</button>
<button type="primary" @click="sendOnlineImage">分享http/https图片</button>
<button type="primary" @click="sendWebPageMessage">分享链接</button>
<button type="warn" @click="sendLocalImage">分享本地图片(Andorid测试未通过)(IOS限10M)</button>
</view>
</template>
<script>
import {
dingSdkInit,
dingAuth,
isDDSupportAPI,
isDingtalkInstalled,
sendTextMessage,
sendLocalImage,
sendBase64Image,
sendOnlineImage,
sendWebPageMessage,
} from '@/uni_modules/cms-dingding';
export default {
onLoad() {
// 初始化钉钉SDK
dingSdkInit({
appId: "钉钉 client ID",
redirectUri: "钉钉 redirectUri",
bundleId: "IOS bundle Id",
responseType: "code",
})
},
methods: {
dingAuth() {
dingAuth({
success: code => {
console.log('success:', code)
},
fail: (error, state) => {
console.log('fail:', error, state)
}
});
},
isDingtalkInstalled() {
uni.showToast({
title: isDingtalkInstalled() ? "钉钉已安装" : "没有安装钉钉",
icon: "none"
})
},
isDDSupportAPI() {
uni.showToast({
title: isDDSupportAPI() ? "钉钉可以分享" : "钉钉不可以分享",
icon: "none"
})
},
sendTextMessage() {
sendTextMessage({
data: "hello",
success(errCode, errMsg) {
console.log("sendTextMessage success",errCode, errMsg);
},
fail(errCode, errMsg) {
console.log("sendTextMessage fail", errCode, errMsg);
}
})
},
sendLocalImage() {
uni.chooseImage({
count: 1,
success(res) {
plus.io.resolveLocalFileSystemURL(res.tempFilePaths[0], (entry) => {
entry.file((file) => {
console.log('file.fullPath:',file.fullPath);
sendLocalImage({
data: file.fullPath,
success(errCode, errMsg) {
console.log("sendLocalImage success",errCode, errMsg);
},
fail(errCode, errMsg) {
console.log("sendLocalImage fail", errCode,
errMsg);
}
})
}, (e) => {
console.log('error---', e)
});
});
}
})
},
sendBase64Image() {
uni.chooseImage({
count: 1,
success(res) {
plus.io.resolveLocalFileSystemURL(res.tempFilePaths[0], (entry) => {
entry.file((file) => {
let reader = new plus.io.FileReader();
reader.readAsDataURL(file);
reader.onloadend = (e) => {
sendBase64Image({
data: e.target.result,
success(errCode, errMsg) {
console.log("sendBase64Image success",errCode, errMsg);
},
fail(errCode, errMsg) {
console.log("sendBase64Image fail",
errCode,
errMsg);
}
})
};
}, (e) => {
console.log('error---', e)
});
});
}
})
},
sendOnlineImage() {
sendOnlineImage({
data: "https://env-00jxt1cobn8u-static.normal.cloudstatic.cn/weixin.jpg",
success(errCode, errMsg) {
console.log("sendOnlineImage success",errCode, errMsg);
},
fail(errCode, errMsg) {
console.log("sendOnlineImage fail", errCode,
errMsg);
}
})
},
sendWebPageMessage() {
sendWebPageMessage({
url: "https://env-00jxt1cobn8u-static.normal.cloudstatic.cn/threejsVR/#/",
title: "标题11",
content: "内容22",
thumbUrl: "https://env-00jxt1cobn8u-static.normal.cloudstatic.cn/weixin.jpg",
success(errCode, errMsg) {
console.log("sendWebPageMessage success",errCode, errMsg);
},
fail(errCode, errMsg) {
console.log("sendWebPageMessage fail", errCode,
errMsg);
}
})
}
}
}
</script>
如何获取Clien ID / appid?

如何获取redirectUri?

应用如何开启分享配置

钉钉官方文档说明
有疑问,需要帮助?
