《钉钉应用开发者速成手册》之“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系统中了。

恭喜

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

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

目录
打赏
0
1
0
0
7
分享
相关文章
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
如何高效爬取天猫商品数据?官方API与非官方接口全解析
本文介绍两种天猫商品数据爬取方案:官方API和非官方接口。官方API合法合规,适合企业长期使用,需申请企业资质;非官方接口适合快速验证需求,但需应对反爬机制。详细内容涵盖开发步骤、Python实现示例、反爬策略、数据解析与存储、注意事项及扩展应用场景。推荐工具链包括Playwright、aiohttp、lxml等。如需进一步帮助,请联系作者。
淘宝商品评论API接口系列的应用与数据解析
在电商平台中,用户评论是了解商品质量、服务水平和用户满意度的重要数据来源。淘宝作为中国最大的电商平台,提供了商品评论API接口,帮助开发者获取和分析用户评价数据。本文将介绍淘宝商品评论API接口系列的作用、使用方法,并通过示例展示如何调用API并解析返回的JSON数据。
课时23:案例分享——钉钉
钉钉作为企业级产品,采用SaaS平台技术,依托阿里云的ECS、OSS等服务,实现快速部署与客户需求的高效适应。其数据存储于阿里云RDS中,确保安全性和可靠性,并通过高强度加密保障信息传输安全。阿里云的安全防护措施为钉钉提供了坚实后盾,使其能专注于优化和创新,提升用户体验。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等