所有文章 > 日积月累 > 程序员必备:C#对接钉钉API 实战教程
程序员必备:C#对接钉钉API 实战教程

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

本文将介绍如何使用 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

#你可能也喜欢这些API文章!