从0到1:钉钉小程序开发5步实操指南
想为团队或公司做一个钉钉小程序,但打开官方文档往往被一堆专业术语吓住。别担心,今天我带你从零开始,像搭积木一样把这件事做明白。我们会聊到最核心的几步,以及那些文档里没明说、但实际开发中一定会遇到的“坑”。
一、先搞清楚:你到底需要哪种“钉钉小程序”?
一上来就搜“钉钉小程序开发”,结果发现有两种东西:一种是钉钉自己的 “E应用”(现在叫“钉钉小程序”),另一种是在钉钉里运行阿里系的“支付宝小程序”。这俩有什么区别?简单说:钉钉原生小程序能深度调用钉钉的API,比如直接获取考勤数据、审批流、部门组织架构;而支付宝小程序在钉钉里跑,更像一个“网页版”应用,很多钉钉特有的功能用不了。
所以,如果你要做的是内部OA工具、审批流程、考勤打卡这类深度绑定钉钉场景的,一定选钉钉原生小程序。我见过有人花了半个月用支付宝小程序框架做考勤,结果发现调不了钉钉的打卡接口,最后全部重写,这种冤枉路能不走就别走。
二、准备环境:比官方文档多走一步官方会告诉你下载“钉钉开发者工具”,注册一个企业钉钉账号。但这里有个关键点:你的钉钉账号必须要有“企业管理员”权限,或者至少是“子管理员”且被授予了“应用开发”权限。否则你连创建应用的按钮都看不到。我建议你直接找公司IT负责人,让他把你加到“开发者权限组”里,省去后面反复申请授权的麻烦。
下载开发者工具时,注意区分版本。目前钉钉开发者工具有“小程序版”和“旧版E应用版”,务必下载最新版的小程序版。旧版已经停止维护,但网上很多教程还用的旧版界面,你按着步骤走会发现按钮位置都对不上。
三、创建应用:这里有个容易卡住的细节打开开发者工具,选择“新建小程序”,填写应用名称和描述。这时候你会看到一个“应用首页”的选项,默认是 pages/index/index。别急着点确定,先检查一下你的“AppID”是否已经存在。如果你是第一次创建,系统会自动生成一个AppID,但如果你之前创建过其他应用,这里可能默认加载了旧ID,导致新应用创建失败。
我的习惯是:每次新建应用前,先清空开发者工具的缓存,再重新登录。这能避免90%的奇怪报错。创建成功后,你会得到一个AppID和AppSecret,这两个东西是后面连接钉钉服务器的钥匙,千万别泄露到GitHub上,否则别人能用你的应用发消息。
四、写第一个页面:从“Hello World”到“Hello 组织”官方示例会让你写一个“Hello World”,但咱们可以玩点实际的——做一个“当前部门人数”的小组件。打开 pages/index/index.axml(这是钉钉小程序的视图文件,类似HTML),把里面内容删掉,换成:
```html
```
然后在 pages/index/index.js 里,在 onLoad 方法中调用钉钉的API:
```javascript
dd.getAuthCode({
success: function(res) {
// 用授权码换取用户信息
dd.getDepartment({
success: function(result) {
that.setData({
deptCount: result.department.memberCount
});
}
});
}
});
```
这里有一个很容易忽略的点:钉钉的API大部分都需要用户先授权。你直接调用 getDepartment 会返回错误,必须先调用 getAuthCode 拿到临时授权码。如果你在测试时发现API没反应,十有八九是授权这一步没走通。
五、真机调试:别只在模拟器里自嗨写完代码在开发者工具的模拟器里一点问题没有,一上手机就白屏。这是因为模拟器里的环境太完美了——网络通畅、权限全开、没缓存干扰。真实手机上有各种限制。
我的做法是:每写一个功能,就用手机真机调试一次。钉钉开发者工具支持“远程调试”,你点一下“预览”按钮,会生成一个二维码。拿钉钉扫码,就能在手机上看到实时效果。注意:扫码的账号必须是这个应用所属企业下的成员,你的个人钉钉号扫了会提示“无权限”。
如果手机上一片空白,打开开发者工具的“调试器”,看控制台有没有报错。最常见的错误是“dd is not defined”,这是因为钉钉的JS-SDK没加载成功。检查一下你的应用是否在“钉钉开放平台”后台设置了“安全域名”,而且域名必须和你的应用首页地址一致。
六、发布上线:避开“审核不通过”的雷区当你觉得功能差不多了,点击“上传”按钮把代码提交到钉钉开放平台。然后登录 open.dingtalk.com,在“应用开发”里找到你的应用,点击“发布”。这时候会进入审核流程。
这里有个很坑的规则:钉钉小程序的审核非常严格,尤其是涉及“获取用户信息”的功能。如果你的应用一启动就弹窗让用户授权手机号或姓名,大概率会被驳回。正确做法是:在用户真正需要这个功能时再弹出授权。比如你做一个请假审批小程序,用户点击“提交申请”按钮时才去获取他的姓名和部门,而不是首页就弹窗。
另外,应用图标不能使用钉钉官方logo的变体,也不能有“官方”、“认证”等字样。我见过有人把图标做成蓝色圆形里面加个“D”,直接被判定为侵权。
七、扩展思路:小程序能帮你解决什么实际痛点?很多公司做钉钉小程序只是为了“赶时髦”,但真正有价值的是解决实际问题。比如:
我们团队曾做过一个“会议室智能预约”的小程序。传统方法是让行政在Excel里登记,经常撞车。我们的小程序直接调用了钉钉的“日历API”和“部门API”,员工选会议室时能看到每个房间的实时占用情况,还能自动发通知到参会人的钉钉。这个功能只用了两天就开发完,但让行政部每月节省了将近10小时的协调时间。
对比一下:如果用网页版做这个功能,你得自己维护用户登录状态、做权限管理、写消息推送。而钉钉小程序把这些底层能力都封装好了,你只需要调用API就行。这就是“站在钉钉的肩膀上做开发”的真正含义。
如果你现在还在犹豫要不要学钉钉小程序开发,我的建议是:先拿一个最小的痛点练手,比如做一个“部门公告板”或者“今日值班表”。不要一上来就想做个完整OA系统,那样容易半途而废。等你跑通了一个完整流程(从开发到上线),再扩大功能会顺利很多。

