《钉钉应用开发者速成手册》之“API实战——同步打卡数据”

简介: 本教程指导你如何调用创建一个H5微应用,然后使用这个应用获取用户打卡结果。

准备工作

在开始本教程前,确保你已经完成了以下准备工作:

  • 你已经完成了钉钉开发者的注册与激活并拥有了子管理员和开发者权限。若尚未完成,请参考成为钉钉开发者
  • 已经安装了Java开发环境。若未安装,请访问Oracle官网下载。
  • 已下载并安装了IntelliJ IDEA工具。若未安装,请访问IntelliJ IDEA

创建Java工程并安装钉钉Java SDK

在本部分,你将创建一个Java工程并完成钉钉Java SDK的安装。

  1. 打开IntelliJ IDEA工具。
  2. 单击选择Projects,然后单击New Project
    image.png
  3. 参考下图,选择Maven项目和JDK版本,然后单击Next
    image.png
  4. 输入项目名称,然后单击Finish
    image.png
  5. 单击这里下载钉钉服务端Java SDK。
  6. 解压dingtalk-sdk-java.zip
  7. IntelliJ IDEA工具的顶部菜单栏中,选择File > Project Structure
    image.png
  8. 选择Project Settings > Libraries ,然后依次单击 “+”> Java
    image.png
  9. 选中下载的SDK,然后依次单击OK > Apply完成导入。
    image.png

创建应用

在本部分,你将在开发者后台创建一个H5微应用,并完成基础配置。

  1. 登录钉钉开发者后台

    说明
    只有管理员和子管理员可登录开发者后台。
  2. 开发者后台页面,单击应用开发,然后选择企业内部开发 > 小程序,最后单击创建应用
    image.png
  3. 在弹出的创建应用页面中填写基本信息,然后单击确定创建
  • 应用类型:选择H5微应用
  • 开发方式:选择企业自助开发

image.png

  1. 应用创建完成后,在凭证与基础信息页面,复制应用的AppKeyAppSecret备用。
    image.png
  2. 单击开发管理进入开发管理页面,然后单击修改,并根据以下内容配置开发信息。
  • 开发模式:选择开发应用
  • 服务器出口IP:输入调用钉钉服务端API时使用的IP即企业服务器的公网IP,多个IP请以英文逗号","隔开,支持带一个*号通配符的IP格式。可通过工具进行查看。
    本教程设置为127.0.0.1
  • 应用首页地址:输入应用首页URL,在移动端工作台点击应用图标会跳转到此页面。可输入后端服务部署的服务器的IP或域名。例如:http://公网IP:8080
    本教程设置为https://ding-doc.dingtalk.com/

image.png

  1. 单击权限管理进入权限管理页面,然后根据以下配置添加接口调用权限。
  1. 权限范围选择全部员工,然后单击添加接口权限
  2. 选择考勤权限,单击确认。
    image.png

获取调用凭证

在本部分,你将通过创建的应用的AppKeyAppSecret获取调用钉钉服务端API的调用凭证access_token。

  1. 如下图所示,在项目的src/test/java/目录下新建一个AccessTokenUtil测试类。
    image.png
  2. AccessTokenUtil类中添加以下代码,并运行。
    调用gettoken接口获取服务端API授权凭证access_token
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.taobao.api.ApiException;
public class AccessTokenUtil {
    public static String AppKey = "替换为你应用的AppKey";
    public static String AppSecret = "替换为你应用的AppSecret";
    public static String getToken() throws RuntimeException {
        try {
            DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
            OapiGettokenRequest request = new OapiGettokenRequest();
            request.setAppkey(AppKey);
            request.setAppsecret(AppSecret);
            request.setHttpMethod("GET");
            OapiGettokenResponse response = client.execute(request);
            String accessToken = response.getAccessToken();
            return accessToken;
        } catch (ApiException e) {
            throw new RuntimeException();
        }
    }
    public static void main(String[] args)throws ApiException{
        String accessToken = AccessTokenUtil.getToken();
        System.out.println(accessToken);
    }
}
  1. 调用成功的返回结果类似如下。
efcfb3d7f6aa3abxxx

获取考勤打卡记录

在本部分,你将通过服务端API的调用凭证access_token从钉钉后台获取考勤打卡记录。

  1. 如下图所示,在项目的src/test/java/目录下新建一个AttendanceDemo测试类。
    image.png
  2. AttendanceDemo类中添加以下代码,并运行。
    调用/attendance/list接口,获取企业内员工的实际打卡结果。
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiAttendanceListRequest;
import com.dingtalk.api.response.OapiAttendanceListResponse;
import com.taobao.api.ApiException;
import java.util.Arrays;
public class AttendanceDemo {
    /**
     * 获取考勤打卡记录
     *
     * @param args
     */
    public static void main(String args[]) {
        // 获取服务端接口调用凭证access_token
        String access_token = AccessTokenUtil.getToken();
        try {
            // 通过调用接口获取考勤打卡结果
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/attendance/list");
            OapiAttendanceListRequest request = new OapiAttendanceListRequest();
            // 查询考勤打卡记录的起始工作日
            request.setWorkDateFrom("2021-01-12 00:00:00");
            // 查询考勤打卡记录的结束工作日
            request.setWorkDateTo("2021-01-19 00:00:00");
            // 员工在企业内的userid列表,最多不能超过50个。
            request.setUserIdList(Arrays.asList("user123"));
            // 表示获取考勤数据的起始点
            request.setOffset(0L);
            // 表示获取考勤数据的条数,最大不能超过50条。
            request.setLimit(1L);
            OapiAttendanceListResponse response = client.execute(request, access_token);
            System.out.println(response.getBody());
        } catch (ApiException e) {
            e.printStackTrace();
        }
    }
}
  1. 调用成功的返回结果类似如下。
{
    "errcode": 0,
    "recordresult": [
        {
            "checkType": "OnDuty",
            "corpId": "dinge8a56572f80xxxx",
            "locationResult": "Normal",
            "baseCheckTime": 1610380800000,
            "groupId": -1,
            "timeResult": "Normal",
            "userId": "user123",
            "recordId": 54735159894,
            "workDate": 1610380800000,
            "sourceType": "ATM",
            "userCheckTime": 1610380800000,
            "planId": 180485053237,
            "id": 129082
        }
    ],
    "_record": "77964B20FC00",
    "hasMore": false,
    "errmsg": "ok"
}
  1. 此时,你就可以将打卡结果同步到自有的OA系统中了。

恭喜

你已完成本教程的全部内容!

现在你已经拥有一个可以正常运行的钉钉应用。你也可以在其中添加其他功能,参考应用开发了解更多。

相关文章
|
4月前
|
JSON API 数据格式
小红书API接口文档:笔记详情数据开发手册
小红书笔记详情API可获取指定笔记的标题、正文、互动数据及多媒体资源,支持字段筛选与评论加载。通过note_id和access_token发起GET/POST请求,配合签名验证,广泛用于内容分析与营销优化。
|
4月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
4月前
|
供应链 搜索推荐 数据挖掘
探秘京东 API 接口的神奇应用场景
京东API如同数字钥匙,助力商家实现商品、库存、订单等多平台高效同步,提升效率超80%。支持物流实时追踪,增强用户满意度;赋能精准营销与数据分析,决策准确率提升20%以上,全面优化电商运营。
157 1
|
4月前
|
缓存 自然语言处理 API
阿里巴巴国际站关键字搜索 API 实战:3 步搞定多语言适配 + 限流破局,询盘量提升 40%
跨境电商API开发常陷合规、多语言、限流等坑。本文详解从国际合规(GDPR/CCPA)到参数优化、数据结构化及区域化搜索的全链路方案,附Python代码模板与缓存重试架构,助力提升调用成功率至99%+,精准询盘增长42%。
|
5月前
|
供应链 监控 安全
1688商品详情API接口实战指南:合规获取数据,驱动B2B业务增长
1688商品详情API(alibaba.product.get)是合规获取B2B商品数据的核心工具,支持全维度信息调用,助力企业实现智能选品、供应链优化与市场洞察,推动数字化转型。
|
5月前
|
数据采集 缓存 API
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
本文详解小红书笔记详情API的开发对接、实战场景与收益模式,涵盖注册避坑、签名生成、数据解析全流程,并分享品牌营销、内容创作、SAAS工具等落地应用,助力开发者高效掘金“种草经济”。
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
|
4月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
213 11
|
4月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
4月前
|
开发者 API 机器学习/深度学习
淘宝 / 1688 / 义乌购图搜 API 实战指南:接口调用与商业场景应用
本文详解淘宝、1688、义乌购三大平台图片搜索接口的核心特点、调用流程与实战代码。涵盖跨平台对比、参数配置、响应解析及避坑指南,支持URL/Base64上传,返回商品ID、价格、销量等关键信息,助力开发者快速实现商品识别与比价功能。
淘宝 / 1688 / 义乌购图搜 API 实战指南:接口调用与商业场景应用
|
5月前
|
人工智能 运维 监控
阿里云 API 聚合实战:破解接口碎片化难题,3 类场景方案让业务响应提速 60%
API聚合破解接口碎片化困局,助力开发者降本增效。通过统一中间层整合微服务、第三方接口与AI模型,实现调用次数减少60%、响应提速70%。阿里云实测:APISIX+函数计算+ARMS监控组合,支撑百万级并发,故障定位效率提升90%。
468 0