程序员必备:C#对接钉钉API 实战教程

作者:admin · 2025-04-10 · 阅读时间:6分钟

本文将介绍如何使用 C

语言对接钉钉开放平台 API,获取公司部门数据,以及人员的数据。

一、准备工作

  1. 没有钉钉开发者账号:
    • 【注册钉钉开发者账号】:访问 钉钉开放平台 并注册开发者账号。
    • 【创建应用】:登录开发者后台,创建企业内部应用,获取 AppKey 和 AppSecret。
  2. 对接客户钉钉数据:需要客户提供 AppKey:钉钉应用的唯一标识key、AppSecre:钉钉应用的密钥、AgentId:钉钉应用ID。
  3. 添加接口调用权限:调用钉钉服务端接口前,需要先添加所需接口的调用权限,应用创建后,系统默认添加身份验证和消息通知接口权限。接口权限是以应用为维度授予的,每个应用的接口权限都是独立存在的,如果多个应用都需要调用同一个接口,那么每个应用都要添加相对应的接口调用权限。https://open.dingtalk.com/document/orgapp/add-api-permission

二、获取 AccessToken

AccessToken 是调用钉钉 API 的凭证,需要使 AppKey 和 AppSecret 获取。获取token的方法如下:

image

钉钉参数类

image

给获取token包一层方法,供外部调用,方法内部加入缓存设计,这样就不用每次都生成新的token,提升性能,减少请求网络带来的资源消耗。

image

关于token操作的类代码如下:

public class Token
{
    /// 
    /// 到期时间(防止时间差,提前1分钟到期)
    /// 
    ///
    ///
    public static DateTime TookenOverdueTime(DingToken token)
    {
        return token.CreateTokenTime.AddSeconds(token.Expires_in - 60);
    }
    /// 
    /// 是否超时
    /// 
    ///
    ///
    public static bool IsTimeOut(DingToken token)
    {
        return DateTime.Now >= TookenOverdueTime(token);
    }
    /// 
    ///
    /// 
    ///
    public static async Task GetNewToken(DingConfig dingConfig)
    {
        string strulr = "https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}";
        string appkey = dingConfig.DingAppKey; //应用的唯一标识key
        string appsecret = dingConfig.DingAppSecret;//应用的密钥
        HttpHelper http = new HttpHelper();
        string respone = await http.Get(string.Format(strulr, appkey, appsecret), Encoding.UTF8);
        var token = respone.ToObject();
        token.CreateTokenTime = DateTime.Now;
        return token;
    }
    /// 
    /// 获取token
    /// 
    ///
    public static async Task GetToken(DingConfig dingConfig)
    {
        var cache = IocManager.Instance.GetService();
        string key = "${dingConfig.DingAppKey}_${dingConfig.DingAppSecret}_${dingConfig.DingAgentId}";
        //读取缓存token
        var dingDingToken = cache.Read(key);

        if (dingDingToken == null || IsTimeOut(dingDingToken))        {
            dingDingToken = await GetNewToken(dingConfig);
            //写入缓存token
            cache.Write(key, dingDingToken);
        }
        return dingDingToken.Access_token;
    }
}
public class DingToken{
    /// 
    /// access_token
    /// 
    public string Access_token { get; set; }
    /// 
    /// 过期时间
    /// 
    public int Expires_in { get; set; }
    /// 
    /// 创建时间
    /// 
    public DateTime CreateTokenTime { get; set; }
}

三、获取部门列表

  1. 代码Demo:

image

  1. 以下为实际项目开发截图(集成到项目中的运用)

image

同步部门数据,在实例化时赋值,就是调用钉钉API时的Url连接。

image

image

image

四、获取部门下人员列表

  1. 代码demo:

image

  1. 以下为实际项目开发截图(集成到项目中的运用)

image

同步用户数据,在实例化时赋值,就是调用钉钉API时的Url连接。

image

调api获取用户数据

image

写业务逻辑

image

五、.NET Core API

  1. demo实例调用:

image

  1. 以下为实际项目开发截图(集成到项目中的运用)同步部门

image

同步用户

image

六、总结

本文介绍了如何使用 C

语言对接钉钉开放平台 API,获取公司部门,人员的数据。主要步骤包括:注册钉钉开发者账号并创建应用,获取 AppKey 和 AppSecret。使用 AppKey 和 AppSecret 获取 AccessToken。调用钉钉 API 获取部门列表和部门下人员列表。C# 语言可以方便地与钉钉开放平台 API 进行交互,实现企业应用与钉钉的集成。

原文转载自:https://mp.weixin.qq.com/s/rFmHbxy4J-JSSpXGUMjDHA