在上一篇文章中,我写了一些关于企业号的基本信息,介绍了如何配置企业号的回调方法,实现与企业号服务器的沟通桥梁。本文主要继续介绍企业号的开发,介绍微信企业号通讯录的管理和开发功能,介绍如何获取和管理组织中的部门信息。1、企业组织的创建和配置首先我们可以在企业账号的管理后台创建一个组织,在里面创建一些部门和人员列表,方便我们开发和使用。比如创建一个广州爱奇地的根结构,然后在里面创建一些组织,如下图所示。然后在组织结构“广州爱奇迪”的根节点添加一个管理员权限,后面在开发界面调用时就可以使用这个管理员的权限Secret值。CorpID是企业号的标识,每个企业号都有唯一的CorpID;Secret是管理组凭据密钥。系统管理员可以通过管理终端的权限管理功能创建管理组,并为管理组分配应用、联系人、界面的访问权限。完成后,管理团可以获得***秘笈。系统管理员可以通过权限管理查看所有管理组的密文,其他管理员可以通过设置中的开发者凭证查看。我的企业帐号的创建者与“广州爱奇地”组织架构的管理员不同。由于Secret是管理组凭证密钥,如果管理员负责管理不同的组织,他自己管理的Secret的值可能不同。如果我们需要调用接口,就需要使用这个属于我们自己权限级别的Secret值,如下图所示。如果您不是企业账号的创建者,您可能无法修改其中的一些权限分配,您只能查看。2.获取API访问的全局访问票AccessToken和公众号一样,我们调用企业账号API的第一步是先获取访问票AccessToken。这个ticket是全局的,有一定的时效性和频率控制,所以需要妥善缓存,不能每次调用都刷新。企业账号获取访问票据的主要逻辑代码如下。主要是通过manager的Secret值获取对应的密码,从而可以知道自己管理的是哪个组织结构。//////获取微信API每次操作的Token访问令牌//////企业Id///管理组证书密钥///publicstringGetAccessTokenNoCache(stringcorpid,stringcorpsecret){varurl=string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}",corpid,corpsecret);HttpHelperhelper=newHttpHelper();stringresult=helper.GetHtml(url);stringregex="\"access_token\":\"(?.*?)\"";stringtoken=CRegex.GetText(result,regex,"token");返回令牌;}微信企业号说明如下:企业应用调用企业号接口时,企业号后台根据本次访问的AccessToken,验证本次访问的合法性和对应管理组的管理权限返回相应的结果。注意:您应该仔细配置管理组的权限。适可而止。过多的权限会增加误操作的可能性和潜在的信息安全风险。AccessToken是企业账号的全局认证票据,调用接口时必须携带AccessToken。AccessToken需要与CorpID和Secret进行交换,不同的Secret会返回不同的AccessToken。正常情况下,AccessToken的有效期为7200秒。有效期内重复获取,结果相同,自动续期。由于获取access_token的API调用次数非常有限,建议企业全局存储和更新access_token。频繁刷新access_token会导致API调用受限,影响自身业务。2、通讯录管理中部门信息的维护有了***部分的访问权证,我们可以使用API??做很多事情,包括组织结构的获取、创建、删除等功能。官方创建部门的接口定义如下。请求说明https请求方式:POSThttps://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN请求包结构为:{"name":"邮箱产品组","parentid":"1"}参数说明参数必须注明access_token为调用接口credentialname为部门名称。长度限制在1~64个字符。parentid是父部门的ID。根部门id为1返回结果{"errcode":0,"errmsg":"created","id":2}根据上面一些类似的接口定义,我们先定义组织部门数据的维护接口,然后分步实施和调用。#region部门管理//////创建部门。///管理员必须有“操作通讯录”的接口权限和上级部门的管理权限。///CorpDeptCreateJsonCreateDept(stringaccessToken,stringname,stringparentId);//////更新部门。///管理员必须有“操作通讯录”的接口权限和部门的管理权限。///CommonResultDeleteDept(stringaccessToken,intid);//////删除一个部门。///管理员必须有“操作通讯录”的接口权限和部门的管理权限。///CorpDeptListJsonListDept(stringaccessToken);//////获取部门列表。///管理员必须有'获取部门列表'的接口权限和查看部门的权限。///CommonResultUpdateDept(stringaccessToken,intid,stringname);#endregion如果创建部门的接口实现如下,主要是构造URL和POST数据包,然后统一调用获取返回的数据,转换成具体的Json对象实体即可。其他接口的实现方法类似,这里不再赘述。//////创建部门。///管理员必须有“操作通讯录”的接口权限和上级部门的管理权限。///publicCorpDeptCreateJsonCreateDept(stringaccessToken,stringname,stringparentId){stringurlFormat="https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token={0}";vardata=new{name=name,parentId=parentId};varurl=string.Format(urlFormat,accessToken);varpostData=data.ToJson();CorpDeptCreateJsonresult=CorpJsonHelper.ConvertJson(url,postData);返回结果;}CorpDeptCreateJson对象实体类定义如下,我们主要根据返回结果来定义。//////创建部门返回结果///publicclassCorpDeptCreateJson:BaseJsonResult{//////返回错误信息///publicCorpReturnCoderrcode{get;set;}//////返回码的文字描述///publicstringerrmsg{get;set;}//////创建的部门id。///publicintid{get;set;}}3.部门管理的API调用上一节介绍了如何封装部门管理的API,那么我们已经封装了相应的接口和接口实现,如何使用在实际环境中对于里面的调用处理,为了方便自己,我自己创建了一个Winform小程序来测试对应API的功能,如下图。下面介绍一下调??用代码和效果展示。privatevoidbtnCreateDeleteDept_Click(objectsender,EventArgse){ICorpAddressBookApibll=newCorpAddressBookApi();stringname="测试部";CorpDeptCreateJsonjson=bll.CreateDept(token,name,"2");if(json!=null){Console.WriteLine("创建部门:{0},ID:{1}",name,json.id);//更新部门信息name="测试部门修改名称";CommonResultresult=bll.UpdateDept(token,json.id,name);if(result!=null){Console.WriteLine("修改部门名称:{0}{1}",(result.Success?"Success":"Failure"),result.ErrorMessage);}//删除部门result=bll.DeleteDept(token,json.id);if(result!=null){Console.WriteLine("删除部门名称:{0}{1}",(result.Success?"Success":"Failure"),result.ErrorMessage);}}}//////获取部门列表///privatevoidbtnListDept_Click(objectsender,EventArgse){ICorpAddressBookApibll=newCorpAddressBookApi();CorpDeptListJsonlist=bll.ListDept(token);foreach(CorpDeptJsoninfoinlist.department){stringtips=string.Format("{0}:{1}",info.name,info.id);Console.WriteLine(tips);}}原文来自:http://www.cnblogs.com/wuhuacong/p/3992230.html