5分鐘快速接入釘釘實現釘釘考勤

1、前言

因爲今年疫情影響,假期的無限延長讓你們都不得不進行線上辦公,說到線上辦公就毫無疑問,釘釘是這個疫情假期最大的贏家,APP的火熱程度以及下載量甚至壓過了微信,躍居App store免費排行榜第1名的位置。
最先咱們知道釘釘,是由於辦公需求,咱們主要在人員管理/考勤打卡/平常交流/移動審批等平常工做。但你怎麼也想不到,釘釘普遍被你們所知,是由於小學生們的一星差評.....既然釘釘火了,因此就有了這篇文章的到來,讓你們快速的接入釘釘,來幫助企業內部線上交流、考勤打卡、移動審批等,此次我先快速簡述下對接釘釘組織架構和對接釘釘考勤
php

2、對接釘釘組織架構

廢話很少說,直接開擼!
思路分析:你們都知道對接外部應用確定須要受權,拿到受權後就基本就能夠隨心所欲了,因此第一步就是拿受權(令牌token)
1.登錄釘釘官網:https://ding-doc.dingtalk.com/
2.進入開發者後臺,如圖點擊後掃碼登錄(如何在釘釘上建立企業這裏就不說了,直接度娘~我這裏已經建立了本身名下的測試企業)
tapd_30172956_base64_1593415532_82
3.釘釘開發者後臺拿CorpId和SSOSecret(寫的時候發現企業獲取釘釘令牌的方式釘釘已經更新了,因此建議用新的受權方式 )。 我這裏就按新的推薦方式拿appKey和appSecret,
詳細獲取方法:https://ding-doc.dingtalk.com/doc#/serverapi2/eev437 。以下圖就已經拿到
tapd_30172956_base64_1593419187_30






c#

4.使用appKey和appSecret獲取 access_token ,正常狀況下access_token有效期爲7200秒,有效期內重複獲取返回相同結果,並自動續期。
你們各自用本身的開發語言( php是世界上最好的語言 )進行調用,這裏我直接用postman演示:
api

請求方式:GET(HTTPS)
請求地址:https://oapi.dingtalk.com/gettoken?appkey=上面拿的;appsecret=上面拿的

tapd_30172956_base64_1593417022_6

第二步同步企業部門到釘釘組織架構微信

請求方式:POST(HTTPS)
請求地址 :https://oapi.dingtalk.com/department/create?access_token=ACCESS_TOKEN

請求包結構體架構

{
 "name": "helloworld",
 "parentid": "1",
 "order": null,
 "createDeptGroup": true,
 "deptHiding": false,
 "deptPerimits": null,
 "userPerimits": null,
 "outerDept": false,
 "outerPermitDepts": null,
 "outerPermitUsers": null,
 "soureIdentifier": null,
 "id": null
}

參數說明:app

1

這裏我建立一個helloworld部門,調用以下:
tapd_30172956_base64_1593424896_74
建立完後,咱們去釘釘的通信錄看看,能夠看到釘釘組織架構已經發生了變化,在測試企業下面新增的剛纔的helloworld部門,看下圖:
tapd_30172956_base64_1593424935_81
上述,咱們就有了釘釘部門新增的接口,那就簡單了,寫幾行代碼將企業的部門組織架構讀取而後進行依次調用接口建立部門,就完成了部門同步釘釘的目的。



ide

//部門更新接口 
https://oapi.dingtalk.com/department/update?access_token=ACCESS_TOKEN
//部門刪除接口
https://oapi.dingtalk.com/department/delete?access_token=ACCESS_TOKEN&id=ID

第三步同步企業員工到釘釘通信錄中post

請求方式:POST(HTTPS)
請求地址:https://oapi.dingtalk.com/user/create?access_token=ACCESS_TOKEN

請求包結構體:測試

{
 "userid": "fuleli",
 "name": "福樂裏",
 "orderInDepts" : "",
 "department": [371046100],
 "position": "狗產品",
 "mobile": "15172391968",
 "tel" : "xxxx-xxxxxxxx",
 "workPlace" :"",
 "remark" : "",
 "email": "test@xxx.com",
 "orgEmail": "test@xxx.com",
 "jobnumber": "xxx",
 "isHide": false,
 "isSenior": false,
 "extattr": {
 "愛好":"旅遊",
 "年齡":"24"
 }
}

參數說明(若是非必須的字段未指定,則釘釘後臺不改變該字段以前設置好的值)spa

2
3

直接用postman進行調用:
tapd_30172956_base64_1593426726_81

新增完後咱們去釘釘組織架構查看,發現已經新增了福樂裏的員工
tapd_30172956_base64_1593426599_89
同理,後面就簡單了,寫幾行代碼將員工的信息依次調用員工新增接口便可,下面爲須要用到的接口

//獲取部門列表
https://oapi.dingtalk.com/department/list?access_token=ACCESS_TOKEN
//員工更新接口
https://oapi.dingtalk.com/user/update?access_token=ACCESS_TOKEN
//員工刪除接口
https://oapi.dingtalk.com/user/delete?access_token=ACCESS_TOKEN&userid=zhangsan

3、對接釘釘考勤

有了員工數據後,就能獲取全部員工的考勤數據,在獲取考勤數據前,先設置下釘釘後臺的打卡設置,這裏我就用默認設置,而後勾選了地點打卡和wifi打卡

tapd_30172956_base64_1593488108_2

而後咱們使用手機在釘釘中進行打卡,能夠看到29號那天打了2次卡:
tapd_30172956_base64_1593488352_83

咱們直接開始用接口獲取:

請求方式:POST(HTTPS)
請求地址:https://oapi.dingtalk.com/attendance/list?access_token=ACCESS_TOKEN

請求包結構體:

{
 "workDateFrom": "2020-06-29 00:00:00",
 "workDateTo": "2020-07-03 00:00:00",
 "userIdList":["manager962"], 
 "offset":0, 
 "limit":50
}

參數說明:
4

直接使用postman請求

tapd_30172956_base64_1593489403_65

tapd_30172956_base64_1593489441_45

返回參數說明:

5
6

好了,自此爲止,已經能夠獲取到員工的打卡數據了,那咱們就已經實現了接入釘釘實現考勤統計的核心工做了~

分享幾個採坑的問題!

1.不能頻繁調用釘釘開放平臺接口!不能頻繁調用!不能頻繁調用 。以前發生過一次,接口所有返回錯誤,查了半天緣由,最後發現是由於頻繁調用釘釘接口致使觸發了限流,直接被禁止調用..

官方解釋以下:
F85D303D-FB7A-409a-B2B0-61D7773B2728

2.編輯員工信息同步至釘釘中時,若是入參數據中手機號有修改,則直接同步修改失敗。 由於釘釘的主鍵是手機號,因此經過API去修改員工信息時,若是手機號不一致就會 出現問題,因此若是須要經過釘釘接口去修改員工手機號時,正確順序是:刪除原手機號的員工-》新增新手機號的員工(一開始也是沒注意這塊,致使總是同步失敗)

tapd_30172956_base64_1594045182_13

結尾

最後說下:不要想着模擬定位打卡和用其餘人手機代打卡,由於這樣是會被後臺監控到的,因此不要得嘗所失 !!!

tapd_30172956_base64_1593683124_96

下期預告:5分鐘快速接入釘釘工做流

相關文章
相關標籤/搜索