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可以設置多個,用逗號隔開。
總結
以上是生活随笔為你收集整理的Java中对接钉钉API获取数据流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中集成极光推送实现给Androi
- 下一篇: SpringBoot+zxing+Vue