《钉钉应用开发者速成手册》之“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 接口的神奇应用场景
京东API如同数字钥匙,助力商家实现商品、库存、订单等多平台高效同步,提升效率超80%。支持物流实时追踪,增强用户满意度;赋能精准营销与数据分析,决策准确率提升20%以上,全面优化电商运营。
157 1
|
5月前
|
人工智能 自然语言处理 机器人
使用 API 编程开发扣子应用
扣子(Coze)应用支持通过 API 编程,将 AI 聊天、内容生成、工作流自动化等功能集成至自有系统。主要 API 包括 Bot API(用于消息交互与会话管理)及插件与知识库 API(扩展功能与数据管理)。开发流程包括创建应用、获取密钥、调用 API 并处理响应,支持 Python 等语言。建议加强错误处理、密钥安全与会话管理,提升集成灵活性与应用扩展性。
1657 0
|
6月前
|
监控 供应链 搜索推荐
电商数据开发实践:深度剖析1688商品详情 API 的技术与应用
在电商数字化转型中,数据获取效率与准确性至关重要。本文介绍了一款高效商品详情API,具备全维度数据采集、价格库存管理、多媒体资源获取等功能,结合实际案例探讨其在电商开发中的应用价值与优势。
|
6月前
|
机器学习/深度学习 人工智能 缓存
电商 API 接口:开启全平台商品信息同步新时代
在数字化浪潮下,电商平台激增,消费者跨平台购物成为常态。然而,商品信息分散导致数据不一致、库存混乱等问题。电商 API 接口应运而生,通过标准化数据交换,实现多平台商品信息实时同步,提升运营效率、降低成本、增强用户体验,成为企业数字化转型的关键引擎。
412 0
|
6月前
|
API 定位技术 调度
实现精准定位的—坐标系经纬度转换API技术说明和行业应用
在地图服务、物流调度等应用中,多源地理位置数据因采用不同坐标系(如WGS84、GCJ02、BD09)需统一转换,以避免位置偏移影响路径规划与分析精度。本文介绍坐标转换背景、技术方案及Python调用示例,强调其在智慧交通与物流系统中的重要性。
673 0
|
7月前
|
安全 API 网络安全
API安全危机四伏!开发者掌握这“十八般武艺”才能破局?
在数字化时代,API作为连接应用的核心枢纽,其安全性至关重要。本文深入解析API安全攻防实战技巧,涵盖数据传输加密、身份认证、输入验证、速率限制、日志监控、API网关应用及持续安全实践等七大防御策略,帮助开发者全面掌握保护数据接口的关键技能,构筑坚实的安全防线。
457 100
|
4月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
213 11
|
5月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
722 11
|
5月前
|
NoSQL API 双11
淘宝订单 API 实战:90% 开发者会踩的 “漏单坑”,我用这 3 招彻底解决
本文深入解析了淘宝订单 API 对接中常见的“漏单”问题,结合实战案例拆解了同步逻辑、漏单原因及解决方案。重点分析了“主动轮询”与“回调通知”两种方式的优缺点,指出高频漏单的三大原因:回调丢包、时间窗口设置错误、订单状态判断不全,并提供对应的解决策略。最后分享了一套“回调 + 轮询”双保险方案,帮助彻底杜绝漏单问题。