钉钉企业内部应用 - 获取考勤打卡结果

本文是根据钉钉官方文档归纳所出,最后有 PHP 测试成功的 demo。


概述

钉钉登录是基于 OAuth2.0 协议标准构建的钉钉 OAuth2.0 授权登录系统。 在进行钉钉 OAuth2.0 授权登录接入之前,需要先创建一个应用,并获得相应的 AgentIdAppSecret


OAuth2.0 授权说明

钉钉 OAuth2.0 授权登录让钉钉用户使用钉钉身份安全登录第三方应用或网站,在钉钉用户授权登录已接入钉钉 OAuth2.0 的第三方应用后,第三方可以获取到用户的接口调用凭证 sns_token,通过 sns_token 可以进行钉钉开放平台授权关系接口调用,从而实现获取钉钉用户基本开放信息和帮助用户实现基础开放功能等。


获取登录用户信息时序图:

image-20210629101658562


钉钉 OAuth2.0 授权登录支持 authorization_code 模式,适用于拥有 server 端的应用授权。该模式整体流程为:

  1. 第三方发起钉钉授权登录请求,钉钉用户允许授权第三方应用后,钉钉会拉起应用或重定向到第三方网站,并且带上授权临时票据 code 参数。
  2. 通过 Code 调用 sns/getuserinfo_bycode 接口获取授权登录用户信息。


配置参数说明

Corpid 是企业在钉钉中的标识,每个企业拥有唯一的 Corpid

UserID 企业内每个员工都有唯一的 UserID,创建后不可修改。

Unionid 用户在当前钉钉开放平台账号范围内的唯一标识,同一个钉钉开放平台账号可以包含多个开放应用

AppKey/AppSecret

  • Appkey 是 企业内部应用 应用的唯一身份标识
  • AppSecret 是对应的调用密钥


具体实现过程

第一步: 准备工作 - 创建和配置应用并下载 SDK 包

根据自身情况进行配置,点我查看教程


第二步: 使用 SDK 调用接口

通过 SDK 调用考勤接口,获取考勤的打卡结果,服务端实现可分为以下步骤:

  1. 下载 SDK 并导入到项目目录中,并将 appKeyappSecret 保存下来


  2. 创建调用接口的文件,这里以 PHP 为例,创建名为 dd_attendance.php


  3. 根据 appKeyappSecret 调用 获取企业内部应用的 access_token 接口获取 access_token


  4. 根据 access_token 调用 获取打卡结果 接口获取考勤打卡的结果数据


请求参数说明

image-20210707114547528


请求示例 (PHP SDK)

// 基本配置, 替换成自己的
$AppKey = '';$AppSecret = '';// 请求示例 (PHP SDK)
include "./dingding/TopSdk.php";
date_default_timezone_set('Asia/Shanghai');$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);$req = new OapiAttendanceListRequest;// 先获取 access_token - 开始 , access_token 有效期为 7200秒,有效期内重复获取会返回相同结果并自动续期,过期后再获取会返回新的 access_token, 文档链接: https://developers.dingtalk.com/document/app/obtain-orgapp-token
$access_token = '';
// 这里没有将 access_token 缓存, 实际操作时, 可将 access_token 进行缓存
$get_c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_GET , DingTalkConstant::$FORMAT_JSON);$access_token_request = new OapiGettokenRequest;$access_token_request->setAppkey($AppKey);
$access_token_request->setAppsecret($AppSecret);$access_token_response = $get_c->execute($access_token_request, $access_token, "https://oapi.dingtalk.com/gettoken");if ($access_token_response->errcode != 0){// 错误
} else {$access_token = $access_token_response->access_token;file_put_contents('./data.log', 'access_token: ' . $access_token . '    ' . date("Y-m-d H:i:s", time())  . "\n" . "\n", FILE_APPEND);
}
// 先获取 access_token - 结束// 设置起始工作日 - 起始工作日与结束工作日最多相隔 7 天
$req->setWorkDateFrom("2021-07-06 08:00:00");// 设置结束工作日 - 起始工作日与结束工作日最多相隔 7 天
$req->setWorkDateTo("2021-07-07 12:00:00");// 用户所在企业的 userid
$userIds = array('276933490129090108');
$req->setUserIdList($userIds);// 页码
$req->setOffset("0");// 每页条数
$req->setLimit("50");// 获取
$responce_obj = $c->execute($req, $access_token, "https://oapi.dingtalk.com/attendance/list");var_dump($responce_obj);

返回示例

{"errcode":0,"recordresult":[{"checkType":"OnDuty","corpId":"ding2b15dc6154f4d112ffe93478753d9884","locationResult":"Normal","baseCheckTime":1625544000000,"groupId":781795238,"timeResult":"Normal","userId":"276933490129090108","recordId":67023885464,"workDate":1625500800000,"sourceType":"BOSS","userCheckTime":1625544000000,"planId":216341548836,"id":160663847413},{"checkType":"OffDuty","corpId":"ding2b15dc6154f4d112ffe93478753d9884","locationResult":"Normal","baseCheckTime":1625565600000,"groupId":781795238,"timeResult":"Normal","userId":"276933490129090108","recordId":67393055443,"workDate":1625500800000,"sourceType":"BOSS","userCheckTime":1625565600000,"planId":216341548837,"id":161310850821},{"checkType":"OnDuty","corpId":"ding2b15dc6154f4d112ffe93478753d9884","locationResult":"Normal","baseCheckTime":1625630400000,"groupId":781795238,"timeResult":"Normal","userId":"276933490129090108","recordId":67224193723,"workDate":1625587200000,"sourceType":"USER","userCheckTime":1625628272000,"planId":217574178290,"id":160248303849}],"hasMore":false,"errmsg":"ok"
}

返回参数说明

image-20210707103916801


下载 demo

我的 demo 从这里下载,点我

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/66591.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过Webhook接入钉钉群自定义机器人

在钉钉群中添加Webhook自定义机器人, 复制Webhook地址保存: https://oapi.dingtalk.com/robot/send?access_tokenxxxxxx 安全设置:选择加签方式,复制加签保存 #!/usr/bin/python # -*- coding: utf-8 -*- import requests imp…

注册之谷歌验证码

验证码的使用 前言一、验证码jar包二、谷歌验证码Kaptcha的使用1.在web.xml文件中配置用于生成验证码的Serclet程序2.在表单中使用img标签显示并使用3.获取服务器验证码和客户端进行比较4.切换验证码 总结 前言 在许多项目中都会涉及到登陆注册,而我们日常的注册除…

网站注册登录等短信验证码

现在随着时代的发展,许多网站的注册,或者登录都和手机号码关联在一起,这样也方便了我们记住账号,下面我就来说一下怎么用php发短信,这个是卸载(lavarel)框架的。 这里给大家介绍一个平台--云信…

输入手机号获取验证码的注册页面,说出测试过程

考察的点有两个,一个是对手机号格式和验证码格式的验证,一个是对验证码获取功能的验证。 基本原理:验证码1分钟内只能发一次,有效期10分钟。验证码是后台Java代码生成的,然后验证码生成时间和此验证码会保存在数据库的…

证券交易1-交易系统简介

证券交易过程,主要的过程是个人投资者或者机构投资者,按照股票的行情,报价下订单到交易所的,然后收到交易所回报的过程。本文主要介绍了这一交易过程中涉及到的系统。 证券交易业务流程图: 证券交易IT系统架构图&…

通达信交易系统接口是不是免费的?

通达信是一款第三方的交易系统,它可以跟我们常用的券商系统进行对接,所以通达信更像是一款接口型软件,但是为什么大家要做交易时,不直接使用券商交易系统,反而选择用通达信交易系统接口呢?这样难道不是还多…

“Safari 16.4 发布,简直是开发者的‘地狱’!”

以往 Safari 发布新版本,因其更新时间及更新内容的不确定性,时而都会给开发者带来一些问题,但都比不上这次 Safari 16.4 发布带来的麻烦大。 原文链接:https://www.construct.net/en/blogs/ashleys-blog-2/safari-releases-develo…

3 亿岗位或被取代?程序员躺枪,多个行业迎来新时代!

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 2023 年的流量密码,非 ChatGPT 莫属。 它的横空出世,不仅撼动着科技界,让国内外大厂纷纷躬身入局、抢占高地,也让打工人在 AI 新时代的到…

AutoGPT注册使用手册

Auto-GPT介绍 Auto-GPT是一个基于ChatGPT的工具,他能帮你自动完成各种任务,比如写代码、写报告、做调研等等。使用它时,你只需要告诉他要扮演的角色和要实现的目标,然后他就会利用ChatGPT和谷歌搜索等工具,不断“思考…

ChatGPT实战:运维之创建Dockerfile,部署SpringBoot

需求:创建Dockerfile 交互提示语: 为 SpringBoot应用程序创建 Dockerfile 或容器化策略 标准提示语(Prompt ):为 [语言或技术] 应用程序创建 Dockerfile 或容器化策略。 回答结果: 要为 SpringBoot 应用程序…

软件设计师---UML高频考点总结

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏 软件设计师高频考点合集 视频 2022软件设计师-提炼高频考点-个人学习过程的总结,仅供参考&…

Banner设计文字如何排版,如何设计字体

本文由:“学设计上兔课网”原创,图片素材来自网络,仅供学习分享 Banner设计文字如何排版,如何设计字体?随着网络的发展,如今,大家最常见的应该就是网页banner广告了。对于Banner设计,很多人认为不需要太多的设计思路就可以完成。其实设计banner可能并不难,但是设计一…

android设计常用字体,界面设计必备!全方位科普常用的字体规范

编者按:90后UI设计师的最新干货!应广大群众要求,今天Micu设计 同学不说高大上的教程,来点即学即用的干货,从界面中文字的使用规则到字体颜色的选择,都有具体细致的说明,非常适合基础不扎实的同学…

关于 LayOut 室内设计施工图填充的那些事儿

作者: 活力网Andrew 大家用LayOut画施工图的时候 最纠结的一个问题就是:如何填充…… 其实 对于LayOut施工图来说 填充 只是很小的一个知识点 这次我们就和大家聊一聊填充的问题 关于Layout填充的方法与技巧 大概一共有四种 1、“野路子”填充法 …

unity使用BMFont制作位图字体

介绍 在游戏中制作中,我们往往会遇到自定义字体的情况,但是unity自带的字体Arial,无法满足我们对字体的需求。虽然我们可以导入字体,但是并不一定符合我们的需要,这个时候就需要使用自定义字体来显示某些东西以达到某种视觉效果,例如: BmFont准备 http://www.angelc…

ASP.NET 界面外观设计与布局

4.1.1 什么是主题和外观 主题是指网页和控件外观属性设置的合集,通过使用主题能够定义页面和控件的样式,然后再Web 应用程序中应用页面和页面上的控件,可以简化样式控制。 主题包括一系列元素,这些元素主要有外观文件、样式表文件…

设计师常用的7款界面设计工具!

不同的界面设计工具都有其独特的优点和不足之处。本文为大家介绍设计师常用的7款界面设计工具:即时设计是一款在线UI界面设计工具,拥有中文界面和丰富的社区资源,适合初学者和专业设计师使用。Sketch具有直观的矢量编辑工具和可重复使用的符号…

小技巧 - Chrome 浏览器绕过“请在微信客户端打开链接”

微信和 QQ 内置浏览器 UA~ Tips:如果此方法失效了,可以底下找我~(已有最新方法)Tips:如果此方法失效了,可以底下找我~(已有最新方法)Tips:如果此方法失效了,可…

陆奇再谈AI:“对不起,我跟大家的看法,有些不一样...”

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前微软全球副总裁、百度COO、奇迹创坛创始人陆奇,最近发表演讲,他认为AI不是什么当下风口,风口意味着投机主义,未免太低估AI对世界发展的影响。陆奇表示…

Ubuntu 放弃了战斗向微软投降

导读这几天看到 Ubuntu 放弃 Unity 和 Mir 开发,转向 Gnome 作为默认桌面环境的新闻,作为一个Linux十几年的老兵和Linux桌面的开发者,内心颇感良多。Ubuntu 做为全世界Linux界的桌面先驱者和创新者,突然宣布放弃自己多年开发的Uni…