1、前言
因为今年疫情影响,假期的无限延长让你们都不得不进行线上办公,说到线上办公就毫无疑问,钉钉是这个疫情假期最大的赢家,APP的火热程度以及下载量甚至压过了微信,跃居App store免费排行榜第1名的位置。
最先咱们知道钉钉,是由于办公需求,咱们主要在人员管理/考勤打卡/平常交流/移动审批等平常工做。但你怎么也想不到,钉钉普遍被你们所知,是由于小学生们的一星差评.....既然钉钉火了,因此就有了这篇文章的到来,让你们快速的接入钉钉,来帮助企业内部线上交流、考勤打卡、移动审批等,此次我先快速简述下对接钉钉组织架构和对接钉钉考勤
php
2、对接钉钉组织架构
废话很少说,直接开撸!
思路分析:你们都知道对接外部应用确定须要受权,拿到受权后就基本就能够随心所欲了,因此第一步就是拿受权(令牌token)
1.登录钉钉官网:https://ding-doc.dingtalk.com/
2.进入开发者后台,如图点击后扫码登录(如何在钉钉上建立企业这里就不说了,直接度娘~我这里已经建立了本身名下的测试企业)
3.钉钉开发者后台拿CorpId和SSOSecret(写的时候发现企业获取钉钉令牌的方式钉钉已经更新了,因此建议用新的受权方式 )。 我这里就按新的推荐方式拿appKey和appSecret,
详细获取方法:https://ding-doc.dingtalk.com/doc#/serverapi2/eev437 。以下图就已经拿到
c#
4.使用appKey和appSecret获取 access_token ,正常状况下access_token有效期为7200秒,有效期内重复获取返回相同结果,并自动续期。
你们各自用本身的开发语言( php是世界上最好的语言 )进行调用,这里我直接用postman演示:
api
请求方式:GET(HTTPS) 请求地址:https://oapi.dingtalk.com/gettoken?appkey=上面拿的;appsecret=上面拿的
第二步同步企业部门到钉钉组织架构微信
请求方式: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
这里我建立一个helloworld部门,调用以下:
建立完后,咱们去钉钉的通信录看看,能够看到钉钉组织架构已经发生了变化,在测试企业下面新增的刚才的helloworld部门,看下图:
上述,咱们就有了钉钉部门新增的接口,那就简单了,写几行代码将企业的部门组织架构读取而后进行依次调用接口建立部门,就完成了部门同步钉钉的目的。
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
直接用postman进行调用:
新增完后咱们去钉钉组织架构查看,发现已经新增了福乐里的员工
同理,后面就简单了,写几行代码将员工的信息依次调用员工新增接口便可,下面为须要用到的接口
//获取部门列表 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打卡
而后咱们使用手机在钉钉中进行打卡,能够看到29号那天打了2次卡:
咱们直接开始用接口获取:
请求方式: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 }
参数说明:
直接使用postman请求
返回参数说明:
好了,自此为止,已经能够获取到员工的打卡数据了,那咱们就已经实现了接入钉钉实现考勤统计的核心工做了~
分享几个采坑的问题!
1.不能频繁调用钉钉开放平台接口!不能频繁调用!不能频繁调用 。以前发生过一次,接口所有返回错误,查了半天缘由,最后发现是由于频繁调用钉钉接口致使触发了限流,直接被禁止调用..
官方解释以下:
2.编辑员工信息同步至钉钉中时,若是入参数据中手机号有修改,则直接同步修改失败。 由于钉钉的主键是手机号,因此经过API去修改员工信息时,若是手机号不一致就会 出现问题,因此若是须要经过钉钉接口去修改员工手机号时,正确顺序是:删除原手机号的员工-》新增新手机号的员工(一开始也是没注意这块,致使总是同步失败)
结尾
最后说下:不要想着模拟定位打卡和用其余人手机代打卡,由于这样是会被后台监控到的,因此不要得尝所失 !!!
下期预告:5分钟快速接入钉钉工做流