本文属于个人原创作品、个人总结,谢绝转载、抄袭。如果您有疑问或者希望沟通交流,可以联系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#实现企业应用接入钉钉相关推荐

  1. java信息化平台_Java开源企业信息化平台O2OA接入企业钉钉

    此篇参照钉钉新的微应用添加接口规范编写,希望对大家有用. 如果O2OA成功接入钉钉,O2OA将会自动从钉钉拉取所有的人员和组织进行同步,O2OA的所有人员和组织以企业钉钉中创建的组织架构为准( 本地已 ...

  2. O2OA接入企业钉钉 - 在钉钉上使用移动办公(新版)

    此篇参照钉钉新的微应用添加接口规范编写,希望对大家有用. 如果O2OA成功接入钉钉,O2OA将会自动从钉钉拉取所有的人员和组织进行同步,O2OA的所有人员和组织以企业钉钉中创建的组织架构为准( 本地已 ...

  3. 对接钉钉消息通知_接入钉钉API发送企业消息

    工作中有个需求,是要把录入的销售机会由系统自动分配给销售,然后对接钉钉给销售人员发送企业消息,通知他进行跟单. 参考资料 1. 获取Access_Token Access_Token是企业访问钉钉开放 ...

  4. SQL数据集支持数据参考功能,新增飞书、钉钉、企业微信平台接入支持,DataEase开源数据可视化分析平台v1.15.0发布

    10月10日,DataEase开源数据可视化分析平台正式发布v1.15.0版本. 在这一版本中,DataEase对数据源和数据集两个板块的交互进行了全面优化:数据集方面,SQL数据集新增数据参考功能, ...

  5. 企业内部应用接入钉钉获取部门及人员信息

    企业内部应用接入钉钉获取部门及人员信息 开发者后台配置 1.登录开发者后台并配置 2.创建应用 java开发阶段 1.所需钉钉接口文档 2.springboot项目配置类 3.pom.xml 4.编写 ...

  6. PHP项目接入钉钉企业免登,企业应用钉钉免钉流程(附代码)

    本篇文章的主要内容是企业应用钉钉的免钉流程介绍,感兴趣的朋友可以了解一下,希望能够对你有所帮助. 大概流程如下: 1.注册账号和创建第三方应用:该过程直接按照提示流程操作即可,略过 2.获取corpI ...

  7. 钉钉接入access_无需开发,IT事件接入钉钉的方法详解

    1.市场在拥抱钉钉 最近一篇名为<为什么有很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...

  8. 钉钉微应用接入钉钉免登陆配置记录。NET实现

    在这里记录一下我配置的钉钉接入微应用遇到的坑.搞了我几天天才调通.头皮发麻,现在梳理一下,以免别人也入坑. 1.钉钉接入主要要获取钉钉企业员工的ID,然后去自己的应用的数据库里进行匹配然后实现免登陆的 ...

  9. 钉钉开发者接口文档_无需开发,IT事件接入钉钉的方法详解

    1.市场在拥抱钉钉 最近一篇名为<为什么又很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...

最新文章

  1. Linux火狐解压完运行不了,在Ubuntu系统下firefox账号无法登录的解决
  2. php全局变量GLOBAL
  3. 分布式事务之消息补偿解决方案
  4. OpenERP Web开发
  5. [转]对于非数据库字段的查询过滤以及app_query.append的用法
  6. Hiveduino编程电子积木平台产品介绍宣传视频
  7. python 输出彩色文字
  8. python写字典_用python编写字典并将其写入HDF5-fi
  9. linux fcntl函数,Linux C 学习之 - fcntl 函数
  10. 前端获取北京时间_js获取标准北京时间
  11. CF55D: Beautiful Number
  12. Java 面向接口编程
  13. 常见的英文文本处理步骤
  14. 遭遇Trojan.PSW.ZhengTu,Trojan.PSW.OnlineGames,Trojan.PSW.ZhuXian.b等
  15. dht11 python mysql,通过python脚本将arduino传感器数据发送到mysql数据库时出现问题
  16. 【精品教程】Android应用开发详解pdf分享
  17. 人工智能课程期末总结
  18. VS2017之附加到进程调试
  19. C++ Primer 13-15
  20. arranged by JerryC

热门文章

  1. Linux利用脏牛漏洞提权
  2. 让你一遍就会的【单纯形法解线性规划最优】
  3. 叉烧fan的arduino自学笔记(一) 人体红外报警器
  4. 怎么重置imac_macbookpro怎么恢复出厂设置
  5. 2023北京老博会·老年用品展·老年食品展·北京老年助浴展
  6. 【淘宝补单】操作干预单不能在犯的错误
  7. deepin 蓝牙适配器 安装
  8. 什么是UserAgent以及使用浏览器查看UserAgent的方法
  9. 人生如梦,一尊还酹江月(评倚天屠龙记)
  10. 程序员依然是这个时代,贫寒学子翻身的不二选择