C#实现企业应用接入钉钉
本文属于个人原创作品、个人总结,谢绝转载、抄袭。如果您有疑问或者希望沟通交流,可以联系QQ:865562060。
一、开始接入
1、开始接入钉钉之前,首先需要了解企业接入钉钉的概述:https://open-doc.dingtalk.com/microapp/bgb96b/klan6s
2、了解完成之后,就需要注册钉钉企业并登陆钉钉企业后台。然后就关键的一步就是获取appKey和appSecrethttps://ding-doc.dingtalk.com/doc#/serverapi2/eev437,或者获取企业级的CorpID和CorpSecret。这两者都可以用来获取钉钉的access_token。
3、如果需要将公司内部系统的组织架构、人员信息、角色管理、考勤管理、签到、审批等接入钉钉,可以通过浏览钉钉的开发者文档了解详细的信息:https://ding-doc.dingtalk.com/doc#/serverapi2/cqfmel
4、在企业接入钉钉之后,还可以在企业工作台创建微应用,并可以在人员账户接入钉钉之后,实现企业应用的免登:
https://ding-doc.dingtalk.com/doc#/serverapi2/clotub
5、另外,钉钉的接入工作还有很多,我这里有一个集合体的github项目:https://github.com/Menyoupingxiaoguo/DDHelper,供大家参考。以下文档的代码均可以在此项目中找到,如果对大家有帮助,请点给项目点个star!
6、钉钉RC版(下载钉钉RC版之后和钉钉一样登录,在点击工作台应用之后,浏览器输入http://localhost:16888/即可对工作台应用进行调试,是调试工作台应用的非常不错的工具)。
二、代码实现
1、获取AccessToken。AccessToken是通过企业CorpID和CorpSecret、appKey和appSecret或者换取的接入钉钉的凭证,基本所有的钉钉接口都需要AccessToken,所以第一步就是获取AccessToken。钉钉为AccessToken提供的有效时长为7200s,在有效时间内每次请求都将自动延时,而钉钉提的要求是不允许对AccessToken进行高频率请求。所以我们可以采用缓存的方式,将AccessToken缓存起来,缓存时间少于7200s,即可在每次失效前再次延长。
public string dd_host = ConfigurationManager.AppSettings["DDHost"];
public string dd_corpid = ConfigurationManager.AppSettings["DD_corpid"];
public string dd_corpsecret = ConfigurationManager.AppSettings["DD_corpsecret"];
public string appkey = ConfigurationManager.AppSettings["appkey"];
public string appsecret = ConfigurationManager.AppSettings["appsecret"];/// <summary>
/// 获取AccessToken
/// </summary>
public string GetAccessToken()
{//从缓存中获取Token,如果缓存中已经过期,再从接口获取;object DDToken = CacheHelper.GetCache("dd_accesstoken");if (DDToken == null){//获取tokenIDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");OapiGettokenRequest request = new OapiGettokenRequest();request.Corpid = dd_corpid;request.Corpsecret = dd_corpsecret;request.SetHttpMethod("GET");OapiGettokenResponse response = client.Execute(request);if(response.Errcode == 0)//将Token存入缓存CacheHelper.AddCache("dd_accesstoken", response.AccessToken, 115);}elsereturn DDToken.ToString();return "";
}
/// <summary>
/// 获取AccessToken
/// </summary>
public string GetAccessTokenByApp()
{//从缓存中获取Token,如果缓存中已经过期,再从接口获取;object DDToken = CacheHelper.GetCache("dd_app_accesstoken");if (DDToken == null){//获取tokenIDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");OapiGettokenRequest request = new OapiGettokenRequest();request.Appkey = appkey;request.Appsecret = appsecret;request.SetHttpMethod("GET");OapiGettokenResponse response = client.Execute(request);if (response.Errcode == 0)//将Token存入缓存CacheHelper.AddCache("dd_app_accesstoken", JsonConvert.SerializeObject(response), 115);}elsereturn DDToken.ToString();return "";
}
2、接口示例。
因接入信息接口相对复杂且独特性太强,这里使用获取部门列表接口作为示例。
/// <summary>
/// 获取部门列表
/// </summary>
/// <param name="token"></param>
/// <param name="id">父部门id(如果不传,默认部门为根部门,根部门ID为1)</param>
/// <param name="fetch_child">是否递归部门的全部子部门,ISV微应用固定传递false</param>
/// <returns></returns>
public OapiDepartmentListResponse GetDeptList(string token, string id = "1", bool fetch_child = true)
{IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");OapiDepartmentListRequest request = new OapiDepartmentListRequest();request.Id = id;request.SetHttpMethod("GET");OapiDepartmentListResponse response = client.Execute(request, token);return response;/*{"errcode": 0,"errmsg": "ok","department": [{"id": 2,"name": "xxx","parentid": 1,"createDeptGroup": true,"autoAddUser": true},{"id": 3,"name": "服务端开发组","parentid": 2,"createDeptGroup": false,"autoAddUser": false}]} */
}
三、总结
钉钉的接入相对微信接入,个人认为是要简单许多,而且文档清晰、demo参考性强、SDK也比较多。
C#实现企业应用接入钉钉相关推荐
- java信息化平台_Java开源企业信息化平台O2OA接入企业钉钉
此篇参照钉钉新的微应用添加接口规范编写,希望对大家有用. 如果O2OA成功接入钉钉,O2OA将会自动从钉钉拉取所有的人员和组织进行同步,O2OA的所有人员和组织以企业钉钉中创建的组织架构为准( 本地已 ...
- O2OA接入企业钉钉 - 在钉钉上使用移动办公(新版)
此篇参照钉钉新的微应用添加接口规范编写,希望对大家有用. 如果O2OA成功接入钉钉,O2OA将会自动从钉钉拉取所有的人员和组织进行同步,O2OA的所有人员和组织以企业钉钉中创建的组织架构为准( 本地已 ...
- 对接钉钉消息通知_接入钉钉API发送企业消息
工作中有个需求,是要把录入的销售机会由系统自动分配给销售,然后对接钉钉给销售人员发送企业消息,通知他进行跟单. 参考资料 1. 获取Access_Token Access_Token是企业访问钉钉开放 ...
- SQL数据集支持数据参考功能,新增飞书、钉钉、企业微信平台接入支持,DataEase开源数据可视化分析平台v1.15.0发布
10月10日,DataEase开源数据可视化分析平台正式发布v1.15.0版本. 在这一版本中,DataEase对数据源和数据集两个板块的交互进行了全面优化:数据集方面,SQL数据集新增数据参考功能, ...
- 企业内部应用接入钉钉获取部门及人员信息
企业内部应用接入钉钉获取部门及人员信息 开发者后台配置 1.登录开发者后台并配置 2.创建应用 java开发阶段 1.所需钉钉接口文档 2.springboot项目配置类 3.pom.xml 4.编写 ...
- PHP项目接入钉钉企业免登,企业应用钉钉免钉流程(附代码)
本篇文章的主要内容是企业应用钉钉的免钉流程介绍,感兴趣的朋友可以了解一下,希望能够对你有所帮助. 大概流程如下: 1.注册账号和创建第三方应用:该过程直接按照提示流程操作即可,略过 2.获取corpI ...
- 钉钉接入access_无需开发,IT事件接入钉钉的方法详解
1.市场在拥抱钉钉 最近一篇名为<为什么有很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...
- 钉钉微应用接入钉钉免登陆配置记录。NET实现
在这里记录一下我配置的钉钉接入微应用遇到的坑.搞了我几天天才调通.头皮发麻,现在梳理一下,以免别人也入坑. 1.钉钉接入主要要获取钉钉企业员工的ID,然后去自己的应用的数据库里进行匹配然后实现免登陆的 ...
- 钉钉开发者接口文档_无需开发,IT事件接入钉钉的方法详解
1.市场在拥抱钉钉 最近一篇名为<为什么又很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...
最新文章
- Linux火狐解压完运行不了,在Ubuntu系统下firefox账号无法登录的解决
- php全局变量GLOBAL
- 分布式事务之消息补偿解决方案
- OpenERP Web开发
- [转]对于非数据库字段的查询过滤以及app_query.append的用法
- Hiveduino编程电子积木平台产品介绍宣传视频
- python 输出彩色文字
- python写字典_用python编写字典并将其写入HDF5-fi
- linux fcntl函数,Linux C 学习之 - fcntl 函数
- 前端获取北京时间_js获取标准北京时间
- CF55D: Beautiful Number
- Java 面向接口编程
- 常见的英文文本处理步骤
- 遭遇Trojan.PSW.ZhengTu,Trojan.PSW.OnlineGames,Trojan.PSW.ZhuXian.b等
- dht11 python mysql,通过python脚本将arduino传感器数据发送到mysql数据库时出现问题
- 【精品教程】Android应用开发详解pdf分享
- 人工智能课程期末总结
- VS2017之附加到进程调试
- C++ Primer 13-15
- arranged by JerryC