打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
微信企业号管理通讯录
还没吃饭呢,刚写了下企业号通讯录接口,企业号通讯录具备完全开放的接口,你的应用可以调用这些接口管理部门、成员和标签。

你的应用也可以使用部门、成员、标签发消息,或更改应用的可见范围

在通讯录管理下,有3个接口,部门、成员、标签管理三个接口,我分别写了3个对应类,管理通讯录API地址:

http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%80%9A%E8%AE%AF%E5%BD%95


通讯录部门管理类 MGroup:


[java] view plaincopy
  1. package jsp.weixin.contacts.util;  
  2.   
  3. import jsp.weixin.ParamesAPI.util.ParamesAPI;  
  4. import jsp.weixin.ParamesAPI.util.WeixinUtil;  
  5.   
  6. /** 
  7.  * 通讯录部门管理类 
  8.  * @author Engineer.Jsp 
  9.  * @date 2014.10.10*/  
  10. public class MGroup {  
  11.       
  12.     // 创建部门地址  
  13.     public static String CREATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN";  
  14.     // 更新部门地址  
  15.     public static String UPDATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/update?access_token=ACCESS_TOKEN";  
  16.     // 删除部门地址  
  17.     public static String DELETE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/delete?access_token=ACCESS_TOKEN&id=ID";  
  18.     // 获取部门列表地址  
  19.     public static String GETLIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN";  
  20.       
  21.     /** 
  22.      * 创建部门 
  23.      * @param name 部门名称。长度限制为1~64个字符 
  24.      * @param parentid 父亲部门id。根部门id为1 
  25.      * */  
  26.     public static String Create(String name , String parentid){  
  27.         String Postjson = "{\"name\": %s,\"parentid\": %s}";  
  28.         return String.format(Postjson, name,parentid);  
  29.     }  
  30.       
  31.     /** 
  32.      * 更新部门 
  33.      * @param name 更新的部门名称。长度限制为0~64个字符。修改部门名称时指定该参数 
  34.      * @param id 部门id 
  35.      * */  
  36.     public static String Update(String name , String id){  
  37.         String Postjson = "{\"id\": %s,\"name\": %s}";  
  38.         return String.format(Postjson, name,id);  
  39.     }  
  40.       
  41.     /** 
  42.      * 删除部门 
  43.      * @param id 部门id 
  44.      * */  
  45.     public static String Delete(String id){  
  46.         String delete_url = DELETE_URL.replace("ID", id);  
  47.         return delete_url;  
  48.     }  
  49.     //示例  
  50.     public static void main(String[] args) {  
  51.         /** 
  52.          * 创建部门示例 
  53.          * */  
  54.         // 调取凭证  
  55.         String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken();  
  56.         // 拼装数据  
  57.         String PostData = Create("新建部门", "2");  
  58.         // 提交数据,获取结果  
  59.         int result = WeixinUtil.PostMessage(access_token, "POST", CREATE_URL, PostData);  
  60.         // 打印结果  
  61.         if(0==result){  
  62.             System.out.println("操作成功");  
  63.         }  
  64.         else {  
  65.             System.out.println("操作失败");  
  66.         }  
  67.     }  
  68. }  


通讯录成员管理类 MPerson:


[java] view plaincopy
  1. package jsp.weixin.contacts.util;  
  2.   
  3. import jsp.weixin.ParamesAPI.util.ParamesAPI;  
  4. import jsp.weixin.ParamesAPI.util.WeixinUtil;  
  5.   
  6. /** 
  7.  * 通讯录成员管理类 
  8.  * @author Engineer.Jsp 
  9.  * @date 2014.10.10*/  
  10. public class MPerson {  
  11.     //创建成员地址  
  12.     public static String CREATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=ACCESS_TOKEN";  
  13.     //更新成员地址  
  14.     public static String UPDATA_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN";  
  15.     //删滁成员地址  
  16.     public static String DELETE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN&userid=ID";  
  17.     //获取成员地址  
  18.     public static String GET_PERSON_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=ID";  
  19.     //获取部门成员地址  
  20.     public static String GET_GROUP_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TOKEN&department_id=ID&fetch_child=0&status=0";  
  21.       
  22.     /** 
  23.      * 创建成员 
  24.      * @param userid 员工UserID。对应管理端的账号,企业内必须唯一。长度为1~64个字符 
  25.      * @param name 成员名称。长度为1~64个字符 
  26.      * @param department 成员所属部门id列表 格式: "department": [x, y] 
  27.      * @param position 职位信息 
  28.      * @param mobile 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空 
  29.      * @param gender 性别。gender=0表示男,=1表示女。默认gender=0 
  30.      * @param tel 办公电话。长度为0~64个字符 
  31.      * @param email 邮箱。长度为0~64个字符。企业内必须唯一 
  32.      * @param weixinid 微信号。企业内必须唯一 
  33.      * */  
  34.     public static String Create(String  userid,String name ,String position ,String mobile ,String gender,String tel ,String email,String weixinid){  
  35.         String PostData = "{\"userid\": %s,\"name\": %s,\"department\": [1, 2],\"position\": %s,\"mobile\": %s,\"gender\": %s,\"tel\": %s,\"email\": %s,\"weixinid\": %s}";  
  36.         return String.format(PostData, userid,name,position,mobile,gender,tel,email,weixinid);  
  37.     }  
  38.       
  39.     /** 
  40.      * 更新成员 
  41.      * @param userid 员工UserID。对应管理端的账号,企业内必须唯一。长度为1~64个字符 
  42.      * @param name 成员名称。长度为1~64个字符 
  43.      * @param department 成员所属部门id列表 格式: "department": [x] 
  44.      * @param position 职位信息 
  45.      * @param mobile 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空 
  46.      * @param gender 性别。gender=0表示男,=1表示女。默认gender=0 
  47.      * @param tel 办公电话。长度为0~64个字符 
  48.      * @param email 邮箱。长度为0~64个字符。企业内必须唯一 
  49.      * @param weixinid 微信号。企业内必须唯一 
  50.      * @param enable 启用/禁用成员。1表示启用成员,0表示禁用成员 
  51.      * */  
  52.     public static String Updata(String  userid,String name ,String position ,String mobile ,String gender,String tel ,String email,String weixinid,String enable){  
  53.         String PostData = "{\"userid\": %s,\"name\": %s,\"department\": [1],\"position\": %s,\"mobile\": %s,\"gender\": %s,\"tel\": %s,\"email\": %s,\"weixinid\": %s,\"enable\": %s}";  
  54.         return String.format(PostData, userid,name,position,mobile,gender,tel,email,weixinid,enable);  
  55.     }  
  56.       
  57.     /** 
  58.      * 删除成员 
  59.      * @param userid 员工UserID。对应管理端的账号 
  60.      * */  
  61.     public static String Delete(String userid){  
  62.         String delete_url = DELETE_URL.replace("ID", userid);  
  63.         return delete_url;  
  64.     }  
  65.     /** 
  66.      * 获取成员 
  67.      * @param userid 员工UserID。对应管理端的账号 
  68.      * */  
  69.     public static String GPerson(String userid){  
  70.         String getperson_url = GET_PERSON_URL.replace("ID", userid);  
  71.         return getperson_url;  
  72.     }  
  73.     /** 
  74.      * 获取部门成员 
  75.      * @param department_id 获取的部门id 
  76.      * @param fetch_child 1/0:是否递归获取子部门下面的成员 (可选) 
  77.      * @param status 0获取全部员工,1获取已关注成员列表,2获取禁用成员列表,4获取未关注成员列表。status可叠加 (可选) 
  78.      * */  
  79.     public static String GGroup(String department_id){  
  80.         String getgroup_url = GET_GROUP_URL.replace("ID", department_id);  
  81.         return getgroup_url;  
  82.     }  
  83.     //示例  
  84.     public static void main(String[] args) {  
  85.         /** 
  86.          * 创建成员示例 
  87.          * */  
  88.         // 调取凭证  
  89.         String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken();  
  90.         // 拼装数据  
  91.         String PostData = Create("员工UserID", "Engineer-JSP", "架构师", "150xxxx8524", "0", "0731-80xxx89", "jspping@qq.com", "oYxxxxxxxxxxxxxxx26336o3");  
  92.         // 提交数据,获取结果  
  93.         int result = WeixinUtil.PostMessage(access_token, "POST", CREATE_URL, PostData);  
  94.         // 打印结果  
  95.         if(0==result){  
  96.             System.out.println("操作成功");  
  97.         }  
  98.         else {  
  99.             System.out.println("操作失败");  
  100.         }  
  101.   
  102.     }  
  103.   
  104. }  

通讯录标签管理类 MTag:

[java] view plaincopy
  1. package jsp.weixin.contacts.util;  
  2.   
  3. import jsp.weixin.ParamesAPI.util.ParamesAPI;  
  4. import jsp.weixin.ParamesAPI.util.WeixinUtil;  
  5.   
  6. /** 
  7.  * 通讯录标签管理类 
  8.  * @author Engineer.Jsp 
  9.  * @date 2014.10.10*/  
  10. public class MTag {  
  11.     //创建标签地址  
  12.     public static String CREATE_TAG_URL = "https://qyapi.weixin.qq.com/cgi-bin/tag/create?access_token=ACCESS_TOKEN";  
  13.     //更新标签地址  
  14.     public static String UPDATA_TAG_URL = "https://qyapi.weixin.qq.com/cgi-bin/tag/update?access_token=ACCESS_TOKEN";  
  15.     //删除标签地址  
  16.     public static String DELETE_TAG_URL = "https://qyapi.weixin.qq.com/cgi-bin/tag/delete?access_token=ACCESS_TOKEN&tagid=ID";  
  17.     //获取标签成员地址  
  18.     public static String GET_TAG_PERSON = "https://qyapi.weixin.qq.com/cgi-bin/tag/get?access_token=ACCESS_TOKEN&tagid=ID";  
  19.     //增加标签成员地址  
  20.     public static String ADD_TAG_PERSON = "https://qyapi.weixin.qq.com/cgi-bin/tag/addtagusers?access_token=ACCESS_TOKEN";  
  21.     //删除标签成员地址  
  22.     public static String DELETE_TAG_PERSON = "https://qyapi.weixin.qq.com/cgi-bin/tag/deltagusers?access_token=ACCESS_TOKEN";  
  23.       
  24.       
  25.     /** 
  26.      * 创建标签 
  27.      * @param tagname 标签名称。长度为1~64个字符,标签不可与其他同组的标签重名,也不可与全局标签重名 
  28.      * */  
  29.     public static String Create_Tag(String tagname){  
  30.         String PostData = "{\"tagname\": %s}";  
  31.         return String.format(PostData, tagname);  
  32.     }  
  33.       
  34.     /** 
  35.      * 更新标签名字 
  36.      * @param tagid 标签ID 
  37.      * @param tagname 标签名称。最长64个字符 
  38.      * */  
  39.     public static String Updata_Tag(String tagid , String tagname){  
  40.         String PostData = "{\"tagid\": %s,\"tagname\": %s}";  
  41.         return String.format(PostData, tagid,tagname);  
  42.     }  
  43.       
  44.     /** 
  45.      * 删除标签 
  46.      * @param tagid 标签ID 
  47.      * */  
  48.     public static String Delete_Tag(String tagid){  
  49.         String delete_url = DELETE_TAG_URL.replace("ID", tagid);  
  50.         return delete_url;  
  51.     }  
  52.       
  53.     /** 
  54.      * 获取标签成员 
  55.      * @param tagid 标签ID 
  56.      * */  
  57.     public static String Get_Tag_Person(String tagid){  
  58.         String get_tagperson_url = GET_TAG_PERSON.replace("ID", tagid);  
  59.         return get_tagperson_url;  
  60.     }  
  61.       
  62.     /** 
  63.      * 增加标签成员 
  64.      * @param tagid 标签ID 
  65.      * @param userlist 企业员工ID列表 格式:"userlist":[ "user1","user2"] 
  66.      * */  
  67.     public static String Add_Tag_Person(String tagid,String userlist){  
  68.         String PostData = "{\"tagid\": %s,\"userlist\":%s}";  
  69.         return String.format(PostData, tagid,userlist);  
  70.     }  
  71.       
  72.     /** 
  73.      * 删除标签成员 
  74.      * @param tagid 标签ID 
  75.      * @param userlist 企业员工ID列表 格式:"userlist":[ "user1","user2"] 
  76.      * */  
  77.     public static String Delete_Tag_Person(String tagid,String userlist){  
  78.         String PostData = "{\"tagid\": %s,\"userlist\":%s}";  
  79.         return String.format(PostData, tagid,userlist);  
  80.     }  
  81.     //示例  
  82.     public static void main(String[] args) {  
  83.         /** 
  84.          * 创建标签示例 
  85.          * */  
  86.         // 调取凭证  
  87.         String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken();  
  88.         // 拼装数据  
  89.         String PostData = Create_Tag("新建标签");  
  90.         // 提交数据,获取结果  
  91.         int result = WeixinUtil.PostMessage(access_token, "POST", CREATE_TAG_URL, PostData);  
  92.         // 打印结果  
  93.         if(0==result){  
  94.             System.out.println("操作成功");  
  95.         }  
  96.         else {  
  97.             System.out.println("操作失败");  
  98.         }  
  99.     }  
  100.   
  101. }  
[java] view plaincopy
  1. 其中WeixinUtil的getAccessToken()和PostMessage()是通用方法,主要是方便调用,减少代码量,下面看看这2个方法的代码  
[java] view plaincopy
  1. <span style="font-family: Arial, Helvetica, sans-serif;">getAccessToken()</span>  
[java] view plaincopy
  1.     /**  
  2.  * 获取access_token  
  3.  *   
  4.  * @param CorpID 企业Id  
  5.  * @param SECRET 管理组的凭证密钥,每个secret代表了对应用、通讯录、接口的不同权限;不同的管理组拥有不同的secret  
  6.  * @return  
  7.  */    
  8. public static AccessToken getAccessToken(String corpID, String secret) {    
  9.     AccessToken accessToken = null;    
  10.     
  11.     String requestUrl = access_token_url.replace("CorpID", corpID).replace("SECRET", secret);    
  12.     JSONObject jsonObject = HttpRequest(requestUrl, "GET", null);    
  13.     // 如果请求成功    
  14.     if (null != jsonObject) {    
  15.         try {    
  16.             accessToken = new AccessToken();    
  17.             accessToken.setToken(jsonObject.getString("access_token"));    
  18.             accessToken.setExpiresIn(jsonObject.getInt("expires_in"));  
  19.             System.out.println("获取token成功:"+jsonObject.getString("access_token")+"————"+jsonObject.getInt("expires_in"));  
  20.         } catch (Exception e) {    
  21.             accessToken = null;    
  22.             // 获取token失败    
  23.             String error = String.format("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));    
  24.             System.out.println(error);  
  25.         }    
  26.     }    
  27.     return accessToken;    
  28. }  




[java] view plaincopy
  1. <strong>PostMessage():</strong>  
[java] view plaincopy
  1.   
[java] view plaincopy
  1. /** 
  2.      * 数据提交与请求通用方法 
  3.      * @param access_token 凭证 
  4.      * @param RequestMt 请求方式 
  5.      * @param RequestURL 请求地址 
  6.      * @param outstr 提交json数据 
  7.      * */  
  8.     public static int PostMessage(String access_token ,String RequestMt , String RequestURL , String outstr){  
  9.         int result = 0;  
  10.         RequestURL = RequestURL.replace("ACCESS_TOKEN", access_token);  
  11.         JSONObject jsonobject = WeixinUtil.HttpRequest(RequestURL, RequestMt, outstr);  
  12.          if (null != jsonobject) {    
  13.             if (0 != jsonobject.getInt("errcode")) {    
  14.                 result = jsonobject.getInt("errcode");    
  15.                 String error = String.format("操作失败 errcode:{} errmsg:{}", jsonobject.getInt("errcode"), jsonobject.getString("errmsg"));    
  16.                 System.out.println(error);   
  17.             }    
  18.         }  
  19.         return result;  
  20.     }  



[java] view plaincopy
  1. HttpRequest():  

[java] view plaincopy
  1.  /**  
  2.     * 发起https请求并获取结果  
  3.     *   
  4.     * @param requestUrl 请求地址  
  5.     * @param requestMethod 请求方式(GET、POST)  
  6.     * @param outputStr 提交的数据  
  7.     * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)  
  8.     */    
  9. public static JSONObject HttpRequest(String request , String RequestMethod , String output ){  
  10.     @SuppressWarnings("unused")  
  11.     JSONObject jsonObject = null;  
  12.     StringBuffer buffer = new StringBuffer();  
  13.     try {  
  14.         //建立连接  
  15.         URL url = new URL(request);  
  16.         HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
  17.         connection.setDoOutput(true);  
  18.         connection.setDoInput(true);  
  19.         connection.setUseCaches(false);  
  20.         connection.setRequestMethod(RequestMethod);  
  21.         if(output!=null){  
  22.             OutputStream out = connection.getOutputStream();  
  23.             out.write(output.getBytes("UTF-8"));  
  24.             out.close();  
  25.         }  
  26.         //流处理  
  27.         InputStream input = connection.getInputStream();  
  28.         InputStreamReader inputReader = new InputStreamReader(input,"UTF-8");  
  29.         BufferedReader reader = new BufferedReader(inputReader);  
  30.         String line;  
  31.         while((line=reader.readLine())!=null){  
  32.             buffer.append(line);  
  33.         }  
  34.         //关闭连接、释放资源  
  35.         reader.close();  
  36.         inputReader.close();  
  37.         input.close();  
  38.         input = null;  
  39.         connection.disconnect();  
  40.         jsonObject = JSONObject.fromObject(buffer.toString());  
  41.     } catch (Exception e) {  
  42.     }  
  43.     return jsonObject;  
  44. }   


以上就是管理通讯录接口的主要接口

新建部门:

新建成员:

新建标签:

有疑问请再次留言,看到第一时间回复,谢谢大家观看本博!


                    
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
WebApi MD5 加密(JS + MVC 4)
SpringBoot JWT完成token验证
JAVA实现的微信扫描二维码支付
MVC 微信开发获取用户OpenID
PHP 微信公众号开发
微信企业号开发步骤
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服