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

恭喜

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

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

相关文章
|
9月前
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
|
9月前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
9月前
|
自然语言处理 监控 API
速卖通商品详情API秘籍!轻松获取SKU属性数据
速卖通商品详情API(aliexpress.item.get)支持通过编程获取商品标题、价格、SKU、库存、销量、物流模板、评价及店铺信息,适用于价格监控、选品分析等场景。接口支持多语言返回,采用AppKey+AppSecret+Token认证,需签名验证,确保安全调用。
|
9月前
|
XML JSON API
苏宁商品详情API秘籍!轻松获取商品详情数据
苏宁商品详情API基于RESTful架构,支持JSON/XML格式,通过AppKey、AppSecret与签名三重认证,结合OAuth 2.0实现安全调用。开发者可获取商品名称、价格、销量、库存、促销等实时数据,适用于电商分析与商业智能。接口强制使用HTTPS协议,支持POST/GET请求,统一采用UTF-8编码,确保数据传输安全可靠。
|
9月前
|
安全 API
亚马逊商品详情 API 秘籍!轻松获取 SKU 属性数据
亚马逊商品详情API是官方接口,通过ASIN获取商品标题、价格、库存、评价等50余项数据,支持多站点查询。包含Product Advertising API与MWS两类,分别用于商品信息获取和卖家店铺管理,采用AWS4-HMAC-SHA256认证,保障请求安全。
|
存储 弹性计算 安全
课时23:案例分享——钉钉
钉钉作为企业级产品,采用SaaS平台技术,依托阿里云的ECS、OSS等服务,实现快速部署与客户需求的高效适应。其数据存储于阿里云RDS中,确保安全性和可靠性,并通过高强度加密保障信息传输安全。阿里云的安全防护措施为钉钉提供了坚实后盾,使其能专注于优化和创新,提升用户体验。
546 0
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
688 0
|
存储 弹性计算 安全
案例分享——钉钉
rds数据库 阿里云为钉钉提供了安全性和整体服务的稳定性
案例分享——钉钉
|
存储 弹性计算 安全
案例分享——钉钉|学习笔记
快速学习 案例分享——钉钉
642 0