千家信息网

C#开发微信之如何实现企业组织的创建和配置

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章将为大家详细讲解有关C#开发微信之如何实现企业组织的创建和配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、企业组织的创建和配置首先我们可以在企业号的管
千家信息网最后更新 2025年11月09日C#开发微信之如何实现企业组织的创建和配置

这篇文章将为大家详细讲解有关C#开发微信之如何实现企业组织的创建和配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1、企业组织的创建和配置

首先我们可以在企业号的管理后台里面创建一个组织机构,里面创建一些部门和人员列表,方便我们开发和使用。

例如创建一个广州爱奇迪的根结构,然后在其中在创建一些组织机构,如下图所示。

然后给组织结构根节点"广州爱奇迪"增加一个管理员权限,以后再开发接口里面也就可以使用这个管理员所属的权限Secret值进行调用了。

CorpID是企业号的标识,每个企业号拥有一个唯一的CorpID;Secret是管理组凭证密钥。
系统管理员可通过管理端的权限管理功能创建管理组,分配管理组对应用、通讯录、接口的访问权限。完成后,管理组即可获得唯一的secret。系统管理员可通过权限管理查看所有管理组的secret,其他管理员可通过设置中的开发者凭据查看。

我的企业号的创建者和"广州爱奇迪"组织结构的管理员是不同的,由于Secret是管理组凭证密钥,因此管理者负责不同的组织机构管理的话,自己的管理Secret值可能就不同了。如果我们需要调用接口,就需要用到这个属于自己权限级别的Secret值,如下图所示。

如果不是企业号的创建者,那么可能不能修改里面的一些权限分配,只能查看。

2、API访问的全局唯一票据AccessToken的获取

和公众号一样,我们调用企业号API的第一步也是需要先获取访问的票据AccessToken。这个票据是全局性的,有一定的时效和频率控制,因此需要适当的进行缓存,不能每次调用都去刷新获取。

企业号获取访问票据的主要的逻辑代码如下所示,其主要的就是需要使用管理者的Secret值去获取对应的口令,这样它就能够知道管理的是那个组织结构的了。

        ///         /// 获取每次操作微信API的Token访问令牌        ///         /// 企业Id        /// 管理组的凭证密钥        ///         public string GetAccessTokenNoCache(string corpid, string corpsecret)        {            var url = string.Format("http://www.php.cn/{0}&corpsecret={1}",                                    corpid, corpsecret);            HttpHelper helper = new HttpHelper();            string result = helper.GetHtml(url);            string regex = "\"access_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

http://www.php.cn/

请求包结构体为:

{   "name": "邮箱产品组",   "parentid": "1"}
  • 参数说明

参数必须说明
access_token调用接口凭证
name部门名称。长度限制为1~64个字符
parentid父亲部门id。根部门id为1
  • 返回结果

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

根据上面的一些类似的接口定义说明,我们先来定义下组织机构部门数据的维护接口,然后在逐步实现和调用。

        #region 部门管理        ///         /// 创建部门。        /// 管理员须拥有"操作通讯录"的接口权限,以及父部门的管理权限。        ///         CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId);        ///         /// 更新部门。        /// 管理员须拥有"操作通讯录"的接口权限,以及该部门的管理权限。        ///         CommonResult DeleteDept(string accessToken, int id);        ///         /// 删除部门.        /// 管理员须拥有"操作通讯录"的接口权限,以及该部门的管理权限。        ///         CorpDeptListJson ListDept(string accessToken);        ///         /// 获取部门列表.        /// 管理员须拥有'获取部门列表'的接口权限,以及对部门的查看权限。        ///         CommonResult UpdateDept(string accessToken, int id, string name);         #endregion

如创建部门的接口实现如下所示,主要就是构建URL和POST的数据包,然后统一调用并获取返回数据,转换为具体的Json对象实体即可。其他接口的实现方式类似,不在赘述。

        ///         /// 创建部门。        /// 管理员须拥有"操作通讯录"的接口权限,以及父部门的管理权限。        ///         public CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId)        {            string urlFormat = "http://www.php.cn/{0}";            var data = new            {                name = name,                parentId = parentId            };            var url = string.Format(urlFormat, accessToken);            var postData = data.ToJson();            CorpDeptCreateJson result = CorpJsonHelper.ConvertJson(url, postData);            return result;        }

CorpDeptCreateJson 对象实体类的定义如下所示,我们主要是根据返回结果进行定义的。

    ///     /// 创建部门的返回结果    ///     public class CorpDeptCreateJson : BaseJsonResult    {        ///         /// 返回的错误消息        ///         public CorpReturnCode errcode { get; set; }        ///         /// 对返回码的文本描述内容        ///         public string errmsg { get; set; }        ///         /// 创建的部门id。        ///         public int id { get; set; }    }

3、部门管理的API调用

上面小节介绍了如何封装部门管理的API,那么我们封装好了对应的接口和接口实现,怎么样在实际环境里面进行调用处理的呢,为了方便我创建一个小的Winform程序来测试对应API的功能,如下所示。

下面我们来介绍一下调用的代码和效果展示。

        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);                }            }                    }
        ///         /// 获取部门列表        ///         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);            }        }

关于"C#开发微信之如何实现企业组织的创建和配置"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

管理 部门 权限 接口 企业 管理员 票据 结构 通讯 通讯录 不同 结果 配置 全局 凭证 名称 机构 组织机构 组织结构 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 一般服务器的打印端口是多少 浪潮网络技术支持热线电话 网络安全的内容两百字 嘉兴互联网智慧医院软件开发 sqlite数据库版本发生变化 国家网络安全宣传周例子 爱挖网络技术有限公司 苏州慕名网络技术有限公司 在我的世界服务器里假装挂机 西软软件服务器ip 广播电视服务器ip地址延迟 集团公司网络安全工作统一领导 基因资源数据库 php网站什么软件开发 远程服务器不加载磁盘 网络安全宣传活动图片 手机版如何拥有精灵宝可梦服务器 服务器raid 做系统 桓台企业软件开发定制 深圳网络安全优秀柚米科技 长沙蓝博网络技术有限公司 高校网络安全事件有哪些 周村管理erp软件开发 博世软件开发工程师 湖北企业软件开发费用是多少 服务器mac怎么修改 宁波云软件开发 硚口专业的软件开发价格 珠海服务器风机价格大全 鄞州敏捷软件开发工程
0