5分钟快速接入钉钉实现钉钉考勤
一、前言
由于今年疫情影響,假期的無限延長(zhǎng)讓大家都不得不進(jìn)行線上辦公,說到線上辦公就毫無疑問,釘釘是這個(gè)疫情假期最大的贏家,APP的火熱程度以及下載量甚至壓過了微信,躍居App store免費(fèi)排行榜第1名的位置。
最早我們知道釘釘,是因?yàn)檗k公需求,我們主要在人員管理/考勤打卡/日常交流/移動(dòng)審批等日常工作。但你怎么也想不到,釘釘廣泛被大家所知,是因?yàn)樾W(xué)生們的一星差評(píng)…..既然釘釘火了,所以就有了這篇文章的到來,讓大家快速的接入釘釘,來幫助企業(yè)內(nèi)部線上交流、考勤打卡、移動(dòng)審批等,這次我先快速簡(jiǎn)述下對(duì)接釘釘組織架構(gòu)和對(duì)接釘釘考勤
二、對(duì)接釘釘組織架構(gòu)
廢話不多說,直接開擼!
思路分析:大家都知道對(duì)接外部應(yīng)用肯定需要授權(quán),拿到授權(quán)后就基本就可以為所欲為了,所以第一步就是拿授權(quán)(令牌token)
1.登陸釘釘官網(wǎng):https://ding-doc.dingtalk.com/
2.進(jìn)入開發(fā)者后臺(tái),如圖點(diǎn)擊后掃碼登陸(如何在釘釘上創(chuàng)建企業(yè)這里就不說了,直接度娘~我這里已經(jīng)創(chuàng)建了自己名下的測(cè)試企業(yè))
3.釘釘開發(fā)者后臺(tái)拿CorpId和SSOSecret(寫的時(shí)候發(fā)現(xiàn)企業(yè)獲取釘釘令牌的方式釘釘已經(jīng)更新了,所以建議用新的授權(quán)方式?)。?我這里就按新的推薦方式拿appKey和appSecret,
詳細(xì)獲取方法:https://ding-doc.dingtalk.com/doc#/serverapi2/eev437 。如下圖就已經(jīng)拿到
4.使用appKey和appSecret獲取?access_token?,正常情況下access_token有效期為7200秒,有效期內(nèi)重復(fù)獲取返回相同結(jié)果,并自動(dòng)續(xù)期。
大家各自用自己的開發(fā)語言(?php是世界上最好的語言?)進(jìn)行調(diào)用,這里我直接用postman演示:
第二步同步企業(yè)部門到釘釘組織架構(gòu)
請(qǐng)求方式:POST(HTTPS)請(qǐng)求地址 :https://oapi.dingtalk.com/department/create?access_token=ACCESS_TOKEN請(qǐng)求包結(jié)構(gòu)體?:
{"name": "helloworld","parentid": "1","order": null,"createDeptGroup": true,"deptHiding": false,"deptPerimits": null,"userPerimits": null,"outerDept": false,"outerPermitDepts": null,"outerPermitUsers": null,"soureIdentifier": null,"id": null}參數(shù)說明:
這里我創(chuàng)建一個(gè)helloworld部門,調(diào)用如下:
創(chuàng)建完后,我們?nèi)メ斸數(shù)耐ㄓ嶄浛纯?#xff0c;可以看到釘釘組織架構(gòu)已經(jīng)發(fā)生了變化,在測(cè)試企業(yè)下面新增的剛才的helloworld部門,看下圖:
上述,我們就有了釘釘部門新增的接口,那就簡(jiǎn)單了,寫幾行代碼將企業(yè)的部門組織架構(gòu)讀取然后進(jìn)行依次調(diào)用接口創(chuàng)建部門,就完成了部門同步釘釘?shù)哪康摹?/p>//部門更新接口https://oapi.dingtalk.com/department/update?access_token=ACCESS_TOKEN//部門刪除接口https://oapi.dingtalk.com/department/delete?access_token=ACCESS_TOKEN&id=ID
第三步同步企業(yè)員工到釘釘通訊錄中
請(qǐng)求方式:POST(HTTPS)請(qǐng)求地址:https://oapi.dingtalk.com/user/create?access_token=ACCESS_TOKEN請(qǐng)求包結(jié)構(gòu)體:
{"userid": "fuleli","name": "福樂里","orderInDepts" : "","department": [371046100],"position": "狗產(chǎn)品","mobile": "15172391968","tel" : "xxxx-xxxxxxxx","workPlace" :"","remark" : "","email": "test@xxx.com","orgEmail": "test@xxx.com","jobnumber": "xxx","isHide": false,"isSenior": false,"extattr": {"愛好":"旅游","年齡":"24"}}參數(shù)說明(如果非必須的字段未指定,則釘釘后臺(tái)不改變?cè)撟侄沃霸O(shè)置好的值)
直接用postman進(jìn)行調(diào)用:
新增完后我們?nèi)メ斸斀M織架構(gòu)查看,發(fā)現(xiàn)已經(jīng)新增了福樂里的員工
同理,后面就簡(jiǎn)單了,寫幾行代碼將員工的信息依次調(diào)用員工新增接口即可,下面為需要用到的接口
三、對(duì)接釘釘考勤
有了員工數(shù)據(jù)后,就能獲取所有員工的考勤數(shù)據(jù),在獲取考勤數(shù)據(jù)前,先設(shè)置下釘釘后臺(tái)的打卡設(shè)置,這里我就用默認(rèn)設(shè)置,然后勾選了地點(diǎn)打卡和wifi打卡
然后我們使用手機(jī)在釘釘中進(jìn)行打卡,可以看到29號(hào)那天打了2次卡:
我們直接開始用接口獲取:
請(qǐng)求方式:POST(HTTPS)請(qǐng)求地址:https://oapi.dingtalk.com/attendance/list?access_token=ACCESS_TOKEN請(qǐng)求包結(jié)構(gòu)體:
{"workDateFrom": "2020-06-29 00:00:00","workDateTo": "2020-07-03 00:00:00","userIdList":["manager962"],"offset":0,"limit":50}參數(shù)說明:
直接使用postman請(qǐng)求
返回參數(shù)說明:
好了,自此為止,已經(jīng)可以獲取到員工的打卡數(shù)據(jù)了,那我們就已經(jīng)實(shí)現(xiàn)了接入釘釘實(shí)現(xiàn)考勤統(tǒng)計(jì)的核心工作了~
分享幾個(gè)采坑的問題!
不能頻繁調(diào)用釘釘開放平臺(tái)接口!不能頻繁調(diào)用!不能頻繁調(diào)用?。之前發(fā)生過一次,接口全部返回錯(cuò)誤,查了半天原因,最后發(fā)現(xiàn)是因?yàn)轭l繁調(diào)用釘釘接口導(dǎo)致觸發(fā)了限流,直接被禁止調(diào)用..
官方解釋如下:
編輯員工信息同步至釘釘中時(shí),如果入?yún)?shù)據(jù)中手機(jī)號(hào)有修改,則直接同步修改失敗。?因?yàn)獒斸數(shù)闹麈I是手機(jī)號(hào),所以通過API去修改員工信息時(shí),如果手機(jī)號(hào)不一致就會(huì) 出現(xiàn)問題,所以如果需要通過釘釘接口去修改員工手機(jī)號(hào)時(shí),正確順序是:刪除原手機(jī)號(hào)的員工-》新增新手機(jī)號(hào)的員工(一開始也是沒注意這塊,導(dǎo)致老是同步失敗)
結(jié)尾
最后說下:不要想著模擬定位打卡和用其他人手機(jī)代打卡,因?yàn)檫@樣是會(huì)被后臺(tái)監(jiān)控到的,所以不要得嘗所失 !!!
下期預(yù)告:5分鐘快速接入釘釘工作流
總結(jié)
以上是生活随笔為你收集整理的5分钟快速接入钉钉实现钉钉考勤的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不懂数据库索引原理?因为你心里没有一点B
- 下一篇: 使用Azure Application