钉钉应用云开发实战营第3课知识应用,如何在本地项目中实现API创建用户

在钉钉应用云开发实战营第3课的学习中,老师主要讲述了如何线上调用钉钉API,实现创建用户。那么如何将该内容应用到我们自己开发的项目中呢?下面以一个.NET示例来演示一下。核心内容是API调用和读取JSON。线上如何调用API创建用户,可以参考这篇文章钉钉应用云开发实战营第3课-新建一个企业,创建一个应用,并用这个应用的App Key和AppSecret调用创建用户接口,新建一个用户

目录

本地项目中实现API创建用户

获取Access_token

获取部门列表

创建用户

本地项目中实现API创建用户

获取Access_token

在钉钉APIExplorer中,我们只要输入AppKey和AppSecret,发起调用就可以得到access_token。而在本地化项目中,需要将发起调用以代码的形式呈现,这里以.NET代码为例。

```.net

///

/// 获取Access_token

///

private string getAccess_token(string Appkey, string Appsecret)

{

    string access_token = "";

    IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");

    OapiGettokenRequest req = new OapiGettokenRequest();

    req.Appkey = Appkey;

    req.Appsecret = Appsecret;

    req.SetHttpMethod("GET");

    OapiGettokenResponse rsp = client.Execute(req, access_token);

    string json = rsp.Body;

    Access_token rt = JsonConvert.DeserializeObject(json);

    return rt.access_token;

}

```

调用钉钉API使用到了钉钉提供的TopSdk.dll动态库文件,在项目中引用该动态库文件,同时在添加如下命名空间。

```.net

using DingTalk.Api;

using DingTalk.Api.Request;

using DingTalk.Api.Response;

```

由于api调用返回的信息是json字符串,这里需要对json字符串进行解析。自定义access_token类,引用Newtonsoft.Json.dll文件,添加命名空间。

```.net

using Newtonsoft.Json;

```

自定义access_token类主要代码

···.net

public class Access_token

    {

        ///

        /// 错误码

        ///

        public int errcode { get; set; }

        ///

        /// Access_token

        ///

        public string access_token { get; set; }

        ///

        /// 错误信息

        ///

        public string errmsg { get; set; }

        ///

        /// 实效时间

        ///

        public int expires_in { get; set; }

    }

```

获取部门列表

由于在钉钉用户管理2.0中dept_id_list为必填项,这里需要获取到部门列表,用于给新创建的用户分配部门。

```.net

///

        /// 获取部门列表

        ///

        /// 应用Appkey

        /// 应用Appsecret

        private void getDeptList(string Appkey, string Appsecret)

        {

            string access_token = getAccess_token(Appkey, Appsecret);

            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");

            OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();

            OapiV2DepartmentListsubResponse rsp = client.Execute(req, access_token);

            //Console.WriteLine(rsp.Body);

            string json = rsp.Body;

            DeptList rt = JsonConvert.DeserializeObject(json);

            int ct = rt.result.Count;

            if (ct > 0)

            {

                ArrayList lists = new ArrayList();

                for (int i = 0; i < ct; i++)

                {

                    lists.Add(new SetCls(rt.result[i].dept_id.ToString(), rt.result[i].name));

                }

                this.combo_dept.DisplayMember = "pName";

                this.combo_dept.ValueMember = "pid";

                this.combo_dept.DataSource = lists;

                this.combo_dept.Text = "请选择";

            }

        }

```

这里对获取到的部门列表,进行了json字符串解析,将获取到的部门信息,以数组的方式,添加到combo_dept下拉列表中。

自定义部门信息列表类主要代码。

```.net

public class ResultItem

    {

        ///

        /// 是否允许添加用户

        ///

        public bool auto_add_user { get; set; }

        ///

        /// 上级部门id

        ///

        public int parent_id { get; set; }

        ///

        /// 部门名称

        ///

        public string name { get; set; }

        ///

        /// 部门id

        ///

        public int dept_id { get; set; }

        ///

        /// 是否创建部门组

        ///

        public bool create_dept_group { get; set; }

    }

    public class DeptList

    {

        ///

        /// 错误代码

        ///

        public int errcode { get; set; }

        ///

        /// 列表信息

        ///

        public List result { get; set; }

        ///

        /// 错误信息

        ///

        public string errmsg { get; set; }

        ///

        /// 请求id

        ///

        public string request_id { get; set; }

    }

```

自定义SetCls类主要代码。

```.net

class SetCls

    {

        private string ID;

        private string NAME;

        public SetCls(string pid, string pName)

        {

            this.ID = pid;

            this.NAME = pName;

        }

        public string pID

        {

            get { return ID; }

        }

        public string pName

        {

            get { return NAME; }

        }

    }

```

在创建用户之前,需要点击获取部门列表按钮,对combo_dept下拉列表初始化。

```.net

//按钮执行获取部门列表,初始化combo_dept下拉列表

        private void btnGetDeptList_Click(object sender, EventArgs e)

        {

            string Appkey = tb_AppKey.Text;

            string Appsecret = tb_AppSecret.Text;

            if (string.IsNullOrEmpty(Appkey) || string.IsNullOrEmpty(Appsecret))

           {

                MessageBox.Show("请输入Appkey,Appsecret");

                return;

            }

            getDeptList(Appkey, Appsecret);

        }

```

创建用户

获取到了部门列表后,就可以输入用户信息,进行用户创建了。对用户输入的信息进行验证,如果验证通过,则创建用户。若创建成功,返回成功信息,若失败,返回错误代码和错误信息。

```.net

//创建用户

        private void btnCreateUser_Click(object sender, EventArgs e)

        {

            string Appkey = tb_AppKey.Text;

            string Appsecret = tb_AppSecret.Text;

            if (string.IsNullOrEmpty(Appkey) || string.IsNullOrEmpty(Appsecret))

            {

                MessageBox.Show("请输入Appkey,Appsecret");

                return;

            }

            string userid = tb_userid.Text.Trim();

            string name = tb_name.Text.Trim();

            string mobile = tb_mobile.Text.Trim();

            string dept_id_list = combo_dept.SelectedValue.ToString();

            if (string.IsNullOrEmpty(userid) || string.IsNullOrEmpty(name) ||

                string.IsNullOrEmpty(mobile))

            {

                MessageBox.Show("带*号内容为必填项");

                return;

            }

            if (string.IsNullOrEmpty(dept_id_list))

            {

                MessageBox.Show("请获取部门列表");

                return;

            }

            if (dept_id_list == "请选择")

            {

                MessageBox.Show("请选择部门");

                return;

            }


            string access_token = getAccess_token(Appkey, Appsecret);

            IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/create");

            OapiV2UserCreateRequest req = new OapiV2UserCreateRequest();

            req.Userid = userid;

            req.Name = name;

            req.Mobile = mobile;

            req.DeptIdList = dept_id_list;

            OapiV2UserCreateResponse rsp = client.Execute(req, access_token);

            string json =rsp.Body;

            CreateUser rt = JsonConvert.DeserializeObject(json);

            if (rt.errcode == 0)

            {

                MessageBox.Show("成功创建用户");

            }

            else

            {

                MessageBox.Show(String.Format("未成功创建用户,返回信息:错误代码{0},错误信息{1},部门信息{2}",

                    rt.errcode,rt.errmsg,dept_id_list));

            }

        }

```

窗体截图

winform窗体布局

同时在钉钉后台也可以看到新创建的用户信息

查看用户信息

原创文章,禁止转载,如有疑问,欢迎留言。

CSDN同文章作者链接: https://blog.csdn.net/li375619419/article/details/116202553

你可能感兴趣的:(钉钉应用云开发实战营第3课知识应用,如何在本地项目中实现API创建用户)