C#开发微信门户及使用(17)-微信企业号的通讯录管理出之部门管理

By admin in 亚洲必赢app在哪下载 on 2018年10月4日

 前面一篇随笔企业号的有些基础信息,以及介绍如何安排企业号的回调方式实现和店号服务器进行沟通的大桥。本篇主要还是延续介绍公司号的开发工作的拓展,介绍微信企业号通讯录管理出力量,介绍其中组织单位内部如何取得与治本部门的音讯相当内容。

 1、企业团体的创建同配置

先是我们可以以店堂号的管理后台里面创建一个团伙机构,里面创建有单位及食指列表,方便我们开暨动。

例如创建一个广州爱奇迪的到底结构,然后在其中当创建有伙部门,如下图所出示。

亚洲必赢app在哪下载 1

下一场为组织结构根节点“广州爱奇迪”增加一个大班权限,以后重新开发接口里面为便好使用这管理员所属之权力Secret值进行调用了。

亚洲必赢app在哪下载 2

CorpID是商店号的标识,每个公司号具备一个唯一的CorpID;Secret是管理组凭证密钥。
系统管理员可经过管理端的权柄管理效能创建管理组,分配管理组对动、通讯录、接口的拜会权限。完成后,管理组即可获唯一的secret。系统管理员可通过权管理查看所有管理组的secret,其他管理员可经安装中之开发者凭据查看。

自身的号号的创作者和“广州爱奇迪”组织组织的组织者是见仁见智之,由于Secret是管理组凭证密钥,因此管理者负责不同之集体部门管理的话,自己的管制Secret值可能就差了。如果我们用调用接口,就待因此到是属于自己权力级别的Secret值,如下图所展示。

亚洲必赢app在哪下载 3

 如果未是店号的创建者,那么可能不克改中的一部分权分配,只能查看。

亚洲必赢app在哪下载 4

2、API访问的大局唯一票据AccessToken的获得

暨大众号同样,我们调用企业号API的首先步也是待事先取得访问的票据AccessToken。这个票是全局性的,有一定的时效和频率控制,因此待适量的拓缓存,不能够每次调用都失去刷新获取。

供销社号取访问票据的要紧的逻辑代码如下所示,其重大的就算是亟需以主管的Secret值去取相应之口令,这样她便能够掌握管理的凡甚组织结构的了。

        /// <summary>
        /// 获取每次操作微信API的Token访问令牌
        /// </summary>
        /// <param name="corpid">企业Id</param>
        /// <param name="corpsecret">管理组的凭证密钥</param>
        /// <returns></returns>
        public string GetAccessTokenNoCache(string corpid, string corpsecret)
        {
            var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}",
                                    corpid, corpsecret);

            HttpHelper helper = new HttpHelper();
            string result = helper.GetHtml(url);
            string regex = "\"access_token\":\"(?<token>.*?)\"";

            string token = CRegex.GetText(result, regex, "token");
            return token;
        }

微信企业号的验证如下所示:

当企业应用调用企业号接口时,企业号后台为基于本次访问的AccessToken,校验访问的合法性和所对应的管理组的管理权限以回到相应的结果。

*注:你应该严谨配置管理组的权能,够用就好,权限过大会增加误操作可能性和信息安全隐患。*

AccessToken是公司号的大局唯一票据,调用接口时需携带AccessToken。AccessToken需要因此CorpID和Secret来换取,不同的Secret会回去不同的AccessToken。好端端情况下AccessToken有效期为7200秒,有效期内再也获取返回相同结果,并活动续期。由于获得access_token的api调用次数非常简单,建议企业全局存储和更新access_token,频繁刷新access_token会招致api调用受限,影响我业务

 

2、通讯录管理的部门信息之保护

生矣第一省中的访问票据,我们即便足以运用API来做过多政工了,包括组织结构的取、创建、删除等等功能。

创造机关的合法接口定义如下所示。

  • 恳请说明

Https请求方式: POST

https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN

呼吁保管结构体为:

{
   "name": "邮箱产品组",
   "parentid": "1"
}
  • 参数说明
参数 必须 说明
access_token 调用接口凭证
name 部门名称。长度限制为1~64个字符
parentid 父亲部门id。根部门id为1

 

  • 返结果

{
   "errcode": 0,
   "errmsg": "created",
   "id": 2
}

依据地方的局部接近的接口定义说明,我们先来定义下组织机关单位数据的掩护接口,然后以渐渐落实与调用。

        #region 部门管理
        /// <summary>
        /// 创建部门。
        /// 管理员须拥有“操作通讯录”的接口权限,以及父部门的管理权限。
        /// </summary>
        CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId);

        /// <summary>
        /// 更新部门。
        /// 管理员须拥有“操作通讯录”的接口权限,以及该部门的管理权限。
        /// </summary>
        CommonResult DeleteDept(string accessToken, int id);

        /// <summary>
        /// 删除部门.
        /// 管理员须拥有“操作通讯录”的接口权限,以及该部门的管理权限。
        /// </summary>
        CorpDeptListJson ListDept(string accessToken);

        /// <summary>
        /// 获取部门列表.
        /// 管理员须拥有’获取部门列表’的接口权限,以及对部门的查看权限。
        /// </summary>
        CommonResult UpdateDept(string accessToken, int id, string name); 
        #endregion

假设创建机关的接口实现如下所示,主要就是构建URL和POST的数据包,然后统一调用并收获返回数据,转换为实际的Json对象实体即可。其他接口的兑现方式接近,不以赘述。

        /// <summary>
        /// 创建部门。
        /// 管理员须拥有“操作通讯录”的接口权限,以及父部门的管理权限。
        /// </summary>
        public CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId)
        {
            string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token={0}";
            var data = new
            {
                name = name,
                parentId = parentId
            };
            var url = string.Format(urlFormat, accessToken);
            var postData = data.ToJson();

            CorpDeptCreateJson result = CorpJsonHelper<CorpDeptCreateJson>.ConvertJson(url, postData);
            return result;
        }

CorpDeptCreateJson
对象实体类的概念如下所示,我们第一是根据返回结果开展定义之。

    /// <summary>
    /// 创建部门的返回结果
    /// </summary>
    public class CorpDeptCreateJson : BaseJsonResult
    {
        /// <summary>
        /// 返回的错误消息
        /// </summary>
        public CorpReturnCode errcode { get; set; }

        /// <summary>
        /// 对返回码的文本描述内容
        /// </summary>
        public string errmsg { get; set; }

        /// <summary>
        /// 创建的部门id。
        /// </summary>
        public int id { get; set; }
    }

 

 3、部门管理的API调用

 上面小节介绍了哪封装部门管理的API,那么我们封装好了对应之接口及接口实现,怎么样当其实条件里进行调用处理的呢,为了有利于自己创建一个不怎么的Winform程序来测试对应API的机能,如下所示。

亚洲必赢app在哪下载 5

下面我们来介绍一下调用的代码和功力亮。

        private void btnCreateDeleteDept_Click(object sender, EventArgs e)
        {
            ICorpAddressBookApi bll = new CorpAddressBookApi();
            string name = "测试部门";
            CorpDeptCreateJson json = bll.CreateDept(token, name, "2");
            if (json != null)
            {
                Console.WriteLine("创建了部门:{0}, ID:{1}", name, json.id);

                //更新部门信息
                name = "测试部门修改名称";
                CommonResult result = bll.UpdateDept(token, json.id, name);
                if(result != null)
                {
                    Console.WriteLine("修改部门名称:{0} {1}", (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }

                //删除部门
                result = bll.DeleteDept(token, json.id);
                if (result != null)
                {
                    Console.WriteLine("删除部门名称:{0} {1}", (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }
            }

        }

        /// <summary>
        /// 获取部门列表
        /// </summary>
        private void btnListDept_Click(object sender, EventArgs e)
        {
            ICorpAddressBookApi bll = new CorpAddressBookApi();
            CorpDeptListJson list = bll.ListDept(token);
            foreach (CorpDeptJson info in list.department)
            {
                string tips = string.Format("{0}:{1}", info.name, info.id);
                Console.WriteLine(tips);
            }
        }

亚洲必赢app在哪下载 6

 

 

设若对这个《C#付出微信门户及使用》系列感兴趣,可以关心自我的旁文章,系列随笔如下所示:

C#支付微信门户及运用(25)-微信企业号的客户端管住职能

C#付出微信门户及动(24)-微信小店货架信息保管

C#出微信门户及下(23)-微信小店商品管理接口的包装和测试

C#支出微信门户及应用(22)-微信小店的开支与采用

C#开发微信门户及运用(21)-微信企业号的信及事件之接受处理同解密 

C#支付微信门户及动(20)-微信企业号的菜谱管理

C#开发微信门户及使用(19)-微信企业号的信发送(文本、图片、文件、语音、视频、图文信息等)

C#支出微信门户及用(18)-微信企业号的通讯录管理出的成员管理

C#开发微信门户及下(17)-微信企业号的通讯录管理出之部门管理

C#支付微信门户及应用(16)-微信亚洲必赢app在哪下载企业号的配置以及用

C#出微信门户及用(15)-微信菜单增加扫一扫、发图片、发地理位置功能

 C#支出微信门户及下(14)-在微信菜单中利用重定向得到用户数据

C#出微信门户及应用(13)-使用地理位置扩展相关以

C#支付微信门户及运用(12)-使用语音处理

C#付出微信门户及以(11)–微信菜单的强呈现方法介绍

C#支付微信门户及使用(10)–在治本网受齐声微信用户分组信息

C#出微信门户及用(9)-微信门户菜单管理暨交至微信服务器

C#支付微信门户及下(8)-微信门户应用管理网机能介绍

C#付出微信门户及使用(7)-微信多客服功能跟开发并

C#开微信门户及利用(6)–微信门户菜单的管住操作

C#支出微信门户及用(5)–用户分组信息保管

C#开发微信门户及下(4)–关注用户列表及详细信息管理

C#支付微信门户及使用(3)–文本消息及图文信息之回答

C#付出微信门户及利用(2)–微信音之处理及答复

C#出微信门户及用(1)–开始用微信接口

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2018 亚洲必赢app官方下载 版权所有