Java中對接釘釘API獲取數據流程


場景

需要做后台管理系統,接入釘釘API獲取人員、考勤、審批等相關數據。

實現

釘釘開放平台應用開發文檔

https://developers.dingtalk.com/document/app

首先需要聯系釘釘的管理員,登錄釘釘的后台,然后按照開發平台的文檔指示

首先創建應用

 

 

 

然后填寫應用的基本信息

 

 

 

讓管理員創建應用的目的就是為了獲取下面這兩個AppKey和AppSecret

 

 

 

使用管理員登錄釘釘管理平台並創建應用后,就是為了獲取上面的AppKey和AppSecret,然后拿着這兩個調用釘釘的接口,釘釘會返回token

調用其他的接口需要使用這個token。

注:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

然后在權限管理里面需要設置此應用有哪些權限

默認只有登錄權限和消息通知的權限,然后可以在添加接口權限中添加需要用到的權限

選擇完成之后點擊確認。

Java開發流程

釘釘官方提供了統一的SDK,使用SDK可以便捷地調用服務端API。

 

 

 

下載之后將服務端sdk引入到項目中

 

 

在釘釘開放平台-開發工具-服務端API調試工具-API Explorer中可以直接將上面的兩個AppKey和AppSecret復制過來然后選擇語言進行調用

 

 

 

 

 

比如在Java中調用獲取token的接口示例代碼為

    public String getToken() throws ApiException {
        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
        OapiGettokenRequest req = new OapiGettokenRequest();
        req.setAppkey("釘釘后台應用的AppKey");
        req.setAppsecret("釘釘后台應用的Appsecret");
        req.setHttpMethod("GET");
        OapiGettokenResponse rsp = client.execute(req);
        System.out.println(rsp.getBody());
        return rsp.getAccessToken();
    }

然后獲取token之后就可以使用這個token去訪問釘釘的其他接口

比如通訊錄管理下的部門管理中獲取部門列表的接口,在中間按照要求填入參數,則在右邊就會生成相關代碼

 

 

示例代碼

public class Main {
    public static void main(String[] args) {
        try {
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
   OapiDepartmentListRequest req = new OapiDepartmentListRequest();
   req.setLang("zn_CN");
   req.setFetchChild(false);
   req.setId("1");
   req.setHttpMethod("GET");
   OapiDepartmentListResponse rsp = client.execute(req, "dsfsfdsfgs你獲取的token");
   System.out.println(rsp.getBody());
        } catch (ApiException e) {
            e.printStackTrace();
        }
    }
}

 

其他釘釘的API接口的訪問流程類似。

其他

1.因為釘釘對接口訪問的API的頻率等有限制,建議在定時任務里調用釘釘相關接口,將數據獲取並存儲到自己的數據庫中進行查詢。

2.因為補卡機制,所以如果要獲取考勤數據的話,比如允許補卡3天內的考勤數據,那么每天獲取前四天的數據並進行覆蓋

3.如果在調用接口時出現如下提示:

請求的部門id不在授權范圍內

聯系釘釘管理員登錄后台,找到應用下的權限管理

 

 

把這里的權限范圍改為全部員工

4.另外,釘釘要求訪問其接口的ip地址必須提前配置,在開發管理里面的服務器出口ip

 

 

釘釘只允許在這里配置ip的服務器去調用其接口

如果在開發接口使用自己的電腦調用時,需要獲取公網的服務器ip,瀏覽器百度Ip獲取代理商的ip

 

 

不過這個ip會頻繁改變,一旦請求接口出現ip不在白名單的情況,就要去重新查詢,然后重新配置出口Ip。

所以建議將定時任務寫好,直接將取數據的環節部署在公網服務器上,並配置服務器出口ip,這個ip可以設置多個,用逗號隔開。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM