《钉钉应用开发者速成手册》之“如何调用钉钉API——服务端API”

简介: 为了满足客户需求,钉钉目前主要提供了身份验证、通讯录管理、消息通知、智能办公四大类的服务端API接口给开发者使用。

身份验证

身份验证免登是指用户进入应用后,无需输入钉钉用户名和密码,应用程序可自动获取当前用户身份,进而登录系统的流程。身份验证的服务端API主要分为五部分,如下图所示:

image.png

  • 钉钉应用内免登实现企业内部或第三方企业应用免登,即企业员工在钉钉内使用企业内部应用或第三方企业应用时无需输入账号和密码。可通过以下步骤实现:
  1. 获取JSAPI免登授权码。
  2. 获取用户userId。
  3. 获取用户详情。
  • 管理后台免登应用管理后台免登指管理员在钉钉管理后台对应用进行设置和管理时,无需输入该应用的账号和密码,可直接登录应用的管理后台。可通过以下步骤实现:
  1. 获取免登授权码。
  2. 获取管理员身份信息。
  • 扫码登录实现扫码登录第三方网站。扫码登录指钉钉客户端扫码并确认登录web系统,在系统内获取正在访问用户的钉钉身份,无需输入账号密码的开发流程。提供了以下两种方式:
  • 直接使用钉钉提供的扫码登录页面。
  • 开发者可以将钉钉的登录二维码内嵌到自己的网站中,让用户进行扫码登录。
  • 钉钉内免登
    实现钉钉内免登第三方网站。钉钉内免登第三方网站指用户在钉钉客户端内点击H5网站链接时,无需输入账号密码系统自动获取正在访问用户钉钉身份。
  • 密码登录
    实现使用钉钉账号登录第三方网站。通过手动输入钉钉的账号密码,登录第三方独立的web系统,并获得正在访问用户的钉钉身份。

通讯录管理

通讯录是开发者接入钉钉时最常用到的一批接口,主要包含四大类接口,如下图所示:

说明

在调用通讯录相关接口前,请先添加对应的通讯录权限。开发者可以调用通讯录接口,将通讯录数据写到钉钉中,用于获取钉钉通讯录。如果企业想实时接收通讯录变更,可以注册钉钉的通讯录回调,实时接收通讯录的回调内容。

image.png

  • 用户管理
    包括增删改用户的接口,还可以获取部门下的用户,获取用户详情,获取管理员列表,跟进unionId获取userId,获取企业人数等接口。
  • 部门管理
    包括增删改部门,获取部门ID列表,获取部门详情,获取部门上级部门,获取用户上级部门等接口。
  • 角色管理
    角色分为角色和角色组,所以我们有增加删除修改角色,增加删除角色组合员工,获取角色组,获取角色列表和详情,获取角色下的员工列表等接口。
  • 外部联系人管理
    包括增删改外部联系人,获取外部联系人列表,详情,和标签列表等接口。

消息通知

消息通知主要分为三部分,如下图所示:

image.png

  • 工作通知消息是以企业工作通知会话中某个微应用的名义推送到员工的通知消息,例如审批通知,任务通知等。说明
  • 该接口是异步接口,接口返回成功并不表示用户一定会收到消息,需要通过 “查询工作通知消息的发送结果”接口查询是否发送成功。
  • 工作通知消息也有一些限流规则,具体规则可参考调用频率限制
  • 群会话消息
    是指可以调用接口,以系统名义向群里推送群聊消息。与之配合的是对应的创建群,更新群,获取群人员列表等服务端API接口。
  • 普通会话消息
    是指可以调用接口,以系统名义向群里推送群聊消息。与之配合的是对应的创建群,更新群,获取群人员列表等服务端API接口。

智能办公

智能办公包含以下七个部分,如下图所示:

image.png

  • 智能工作流
    包括发起审批实例,创建更新模板,创建更新待办,获取审批详情,审批回调,审批跳转,待办任务等接口。
  • 考勤
    可以获取考勤数据,获取请假数据,获取考勤组信息,获取排班信息等。
  • 日志
    可以获取日志数据,日志的已读、未读、评论、点赞等信息,获取日志模板。
  • 签到
    可以获取用户的签到记录
  • 智能填表
    可以获取企业智能填表的一些数据,还可以获取填表的一些模板。
  • 智能人事
    可查询待入职员工,查询在职员工,查询离职员工,还有获取花名册信息,添加待入职员工等接口。
  • 公告
    可以获取用户公告数据,包括公告的时间等。

如何调用服务端API

要调用API需要以下三个基础条件:

  • 钉钉应用
    钉钉应用作为您调用API时的身份,有AppKey和AppSecret用于验证您的身份。可以在钉钉开放平台应用开发页面创建应用,创建应用成功后,系统会自动生成AppKeyAppSecret
  • API
    在调用相关接口时,需要明确您即将需要调用的API相关参数定义。
  • 相关权限
    在调用相关接口前,您可能需要先申请对应的接口权限。您可以登陆钉钉开放平台,选择您创建的应用,选择权限管理,添加相应接口权限。

可通过以下步骤,完成服务端API接口的调用:

  1. 获取access_token。调用服务端API,首先要获取access_token。调用access_token的请求方式为GET(HTTPS),请求地址如下图所示,要输入两个参数appkey和appsecret。

说明

  • 正常情况下access_token的有效期是7200秒,有效期内重复获取会返回相同结果,并且自动续期。
  • POST请求必须在HTTP Header中设置对应的Content-Type:application/json。钉钉官方提供了统一的Java、PHP、.NET、Python对应的SDK,可参考服务端SDK下载

image.png

  1. 调用相关API接口。可通过以下方式调用服务端API接口:说明为了防止企业和ISV的应用程序错误从而引发钉钉服务器负载异常,默认情况下,每个服务端调用接口都会有一定的频率限制。当超过此限制时,调用接口会收到对应的错误码。限流规则可参考调用频率限制
  • 方式一:使用API文档中提供的SDK示例代码进行调用。
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey("appkey");
request.setAppsecret("appsecret");
request.setHttpMethod("GET");
OapiGettokenResponse response = client.execute(request);
System.out.println(response.getBody());
  • 方式二:自行编辑HTTP(s)请求来调用API。
请求方式: GET/POST(HTTPS)
请求地址: https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret
请求包体:
...
参数说明:
...
SDK请求示例:
...
返回结果
...
  • 请求方式:接口有HttpGet/HttpPost两种方式。所有的请求都为HTTPS协议。
  • 请求地址:都以oapi.dingtalk.com开头。
  • 参数说明:包括字段含义、取值范围。比如HttpPost的请求包体就是request body的方式。
  • SDK请求示例:使用SDK时调用接口的Java代码示例。
  • 返回结果:钉钉所有接口的返回结果里都有errcode、errmsg。开发者需根据errcode是否为0判断是否调用成功。errcode为0表示调用成功,不为零表示失败,会生成对应的errmsg。开发平台文档上还有全局错误码,针对每个echo都会有一个对应解决方案的描述。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
16天前
|
设计模式 Java API
Java 可扩展 API 设计:打造灵活的应用架构
【4月更文挑战第27天】设计可扩展的 API 是构建灵活、易于维护的应用程序架构的关键。Java 提供了丰富的工具和技术来实现这一目标,使开发者能够构建具有高度可扩展性的应用程序。
38 4
|
16天前
|
存储 缓存 安全
API在Visual Basic中的应用:连接外部服务与扩展功能
【4月更文挑战第27天】本文探讨了在Visual Basic中使用API连接外部服务和扩展功能的方法,涵盖了API的基本概念、种类及如何使用本地和Web API。通过DllImport调用本地API,利用HttpClient和WebClient与Web API交互,同时强调了第三方API的使用和SOA架构中的API角色。安全性、性能优化和错误处理是实践中的关键点。案例研究和最佳实践有助于开发者更有效地利用API,提升Visual Basic应用程序的功能和灵活性。随着API技术的发展,Visual Basic将持续支持开发者创造更强大的应用。
|
3天前
|
API
钉钉API调试工具使用
钉钉API调试工具使用
10 0
|
6天前
|
供应链 搜索推荐 API
API在电子商务中的应用与优势:深入解析
API是电子商务成功的关键,它们不仅促进了技术创新,还提高了用户体验和运营效率。随着技术的不断进步,API将继续在电子商务领域发挥更加重要的作用。电子商务平台通过利用API,可以更加灵活地适应市场变化,提供更加丰富和个性化的购物体验,最终实现业务的增长和扩展。
|
7天前
|
API
请问下钉钉有能够获取到群聊天和个人聊天历史记录的api嘛?
DingTalk API 文档中的“消息列表创建”链接似乎已失效:https://developers.dingtalk.com/document/app/message-list-creation. 请注意检查更新或寻找替代资源。
|
7天前
|
JSON API 数据格式
淘宝商品评论数据获取:从API调用到应用实践
在电商的世界里,用户评论是洞察商品质量的一扇窗。淘宝,作为中国最大的在线购物平台,其海量的商品评论数据尤为宝贵。本文将带您走进淘宝商品评论数据的获取之旅,从API调用的基础知识到实际应用的代码示例,一探究竟。
|
13天前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
14天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数计算中开启函数计算 API 接口如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
112 6
|
14天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
41 4
|
15天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中。将本地电脑上的项目文件部署到阿里云函数计算(FC)上并实现对外提供API和WebUI如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
33 1