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


一、前言

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

二、對接釘釘組織架構

廢話不多說,直接開擼!
思路分析:大家都知道對接外部應用肯定需要授權,拿到授權后就基本就可以為所欲為了,所以第一步就是拿授權(令牌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

4.使用appKey和appSecret獲取 access_token ,正常情況下access_token有效期為7200秒,有效期內重復獲取返回相同結果,並自動續期。
大家各自用自己的開發語言( php是世界上最好的語言 )進行調用,這里我直接用postman演示:

請求方式: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
}

參數說明:

1

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

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

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

請求方式: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"
 }
}

參數說明(如果非必須的字段未指定,則釘釘后台不改變該字段之前設置好的值)

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

三、對接釘釘考勤

有了員工數據后,就能獲取所有員工的考勤數據,在獲取考勤數據前,先設置下釘釘后台的打卡設置,這里我就用默認設置,然后勾選了地點打卡和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分鍾快速接入釘釘工作流

福祿ICH·ERP項目部 福樂里


免責聲明!

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



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