你的应用也可以使用部门、成员、标签发消息,或更改应用的可见范围
在通讯录管理下,有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:
package jsp.weixin.contacts.util; import jsp.weixin.ParamesAPI.util.ParamesAPI; import jsp.weixin.ParamesAPI.util.WeixinUtil; /** * 通讯录部门管理类 * @author Engineer.Jsp * @date 2014.10.10*/ public class MGroup { // 创建部门地址 public static String CREATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN"; // 更新部门地址 public static String UPDATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/update?access_token=ACCESS_TOKEN"; // 删除部门地址 public static String DELETE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/delete?access_token=ACCESS_TOKEN&id=ID"; // 获取部门列表地址 public static String GETLIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN"; /** * 创建部门 * @param name 部门名称。长度限制为1~64个字符 * @param parentid 父亲部门id。根部门id为1 * */ public static String Create(String name , String parentid){ String Postjson = "{\"name\": %s,\"parentid\": %s}"; return String.format(Postjson, name,parentid); } /** * 更新部门 * @param name 更新的部门名称。长度限制为0~64个字符。修改部门名称时指定该参数 * @param id 部门id * */ public static String Update(String name , String id){ String Postjson = "{\"id\": %s,\"name\": %s}"; return String.format(Postjson, name,id); } /** * 删除部门 * @param id 部门id * */ public static String Delete(String id){ String delete_url = DELETE_URL.replace("ID", id); return delete_url; } //示例 public static void main(String[] args) { /** * 创建部门示例 * */ // 调取凭证 String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken(); // 拼装数据 String PostData = Create("新建部门", "2"); // 提交数据,获取结果 int result = WeixinUtil.PostMessage(access_token, "POST", CREATE_URL, PostData); // 打印结果 if(0==result){ System.out.println("操作成功"); } else { System.out.println("操作失败"); } } }
package jsp.weixin.contacts.util; import jsp.weixin.ParamesAPI.util.ParamesAPI; import jsp.weixin.ParamesAPI.util.WeixinUtil; /** * 通讯录成员管理类 * @author Engineer.Jsp * @date 2014.10.10*/ public class MPerson { //创建成员地址 public static String CREATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=ACCESS_TOKEN"; //更新成员地址 public static String UPDATA_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN"; //删滁成员地址 public static String DELETE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN&userid=ID"; //获取成员地址 public static String GET_PERSON_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=ID"; //获取部门成员地址 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"; /** * 创建成员 * @param userid 员工UserID。对应管理端的帐号,企业内必须唯一。长度为1~64个字符 * @param name 成员名称。长度为1~64个字符 * @param department 成员所属部门id列表 格式: "department": [x, y] * @param position 职位信息 * @param mobile 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空 * @param gender 性别。gender=0表示男,=1表示女。默认gender=0 * @param tel 办公电话。长度为0~64个字符 * @param email 邮箱。长度为0~64个字符。企业内必须唯一 * @param weixinid 微信号。企业内必须唯一 * */ public static String Create(String userid,String name ,String position ,String mobile ,String gender,String tel ,String email,String weixinid){ String PostData = "{\"userid\": %s,\"name\": %s,\"department\": [1, 2],\"position\": %s,\"mobile\": %s,\"gender\": %s,\"tel\": %s,\"email\": %s,\"weixinid\": %s}"; return String.format(PostData, userid,name,position,mobile,gender,tel,email,weixinid); } /** * 更新成员 * @param userid 员工UserID。对应管理端的帐号,企业内必须唯一。长度为1~64个字符 * @param name 成员名称。长度为1~64个字符 * @param department 成员所属部门id列表 格式: "department": [x] * @param position 职位信息 * @param mobile 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空 * @param gender 性别。gender=0表示男,=1表示女。默认gender=0 * @param tel 办公电话。长度为0~64个字符 * @param email 邮箱。长度为0~64个字符。企业内必须唯一 * @param weixinid 微信号。企业内必须唯一 * @param enable 启用/禁用成员。1表示启用成员,0表示禁用成员 * */ public static String Updata(String userid,String name ,String position ,String mobile ,String gender,String tel ,String email,String weixinid,String enable){ String PostData = "{\"userid\": %s,\"name\": %s,\"department\": [1],\"position\": %s,\"mobile\": %s,\"gender\": %s,\"tel\": %s,\"email\": %s,\"weixinid\": %s,\"enable\": %s}"; return String.format(PostData, userid,name,position,mobile,gender,tel,email,weixinid,enable); } /** * 删除成员 * @param userid 员工UserID。对应管理端的帐号 * */ public static String Delete(String userid){ String delete_url = DELETE_URL.replace("ID", userid); return delete_url; } /** * 获取成员 * @param userid 员工UserID。对应管理端的帐号 * */ public static String GPerson(String userid){ String getperson_url = GET_PERSON_URL.replace("ID", userid); return getperson_url; } /** * 获取部门成员 * @param department_id 获取的部门id * @param fetch_child 1/0:是否递归获取子部门下面的成员 (可选) * @param status 0获取全部员工,1获取已关注成员列表,2获取禁用成员列表,4获取未关注成员列表。status可叠加 (可选) * */ public static String GGroup(String department_id){ String getgroup_url = GET_GROUP_URL.replace("ID", department_id); return getgroup_url; } //示例 public static void main(String[] args) { /** * 创建成员示例 * */ // 调取凭证 String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken(); // 拼装数据 String PostData = Create("员工UserID", "Engineer-JSP", "架构师", "150xxxx8524", "0", "0731-80xxx89", "[email protected]", "oYxxxxxxxxxxxxxxx26336o3"); // 提交数据,获取结果 int result = WeixinUtil.PostMessage(access_token, "POST", CREATE_URL, PostData); // 打印结果 if(0==result){ System.out.println("操作成功"); } else { System.out.println("操作失败"); } } }
package jsp.weixin.contacts.util; import jsp.weixin.ParamesAPI.util.ParamesAPI; import jsp.weixin.ParamesAPI.util.WeixinUtil; /** * 通讯录标签管理类 * @author Engineer.Jsp * @date 2014.10.10*/ public class MTag { //创建标签地址 public static String CREATE_TAG_URL = "https://qyapi.weixin.qq.com/cgi-bin/tag/create?access_token=ACCESS_TOKEN"; //更新标签地址 public static String UPDATA_TAG_URL = "https://qyapi.weixin.qq.com/cgi-bin/tag/update?access_token=ACCESS_TOKEN"; //删除标签地址 public static String DELETE_TAG_URL = "https://qyapi.weixin.qq.com/cgi-bin/tag/delete?access_token=ACCESS_TOKEN&tagid=ID"; //获取标签成员地址 public static String GET_TAG_PERSON = "https://qyapi.weixin.qq.com/cgi-bin/tag/get?access_token=ACCESS_TOKEN&tagid=ID"; //增加标签成员地址 public static String ADD_TAG_PERSON = "https://qyapi.weixin.qq.com/cgi-bin/tag/addtagusers?access_token=ACCESS_TOKEN"; //删除标签成员地址 public static String DELETE_TAG_PERSON = "https://qyapi.weixin.qq.com/cgi-bin/tag/deltagusers?access_token=ACCESS_TOKEN"; /** * 创建标签 * @param tagname 标签名称。长度为1~64个字符,标签不可与其他同组的标签重名,也不可与全局标签重名 * */ public static String Create_Tag(String tagname){ String PostData = "{\"tagname\": %s}"; return String.format(PostData, tagname); } /** * 更新标签名字 * @param tagid 标签ID * @param tagname 标签名称。最长64个字符 * */ public static String Updata_Tag(String tagid , String tagname){ String PostData = "{\"tagid\": %s,\"tagname\": %s}"; return String.format(PostData, tagid,tagname); } /** * 删除标签 * @param tagid 标签ID * */ public static String Delete_Tag(String tagid){ String delete_url = DELETE_TAG_URL.replace("ID", tagid); return delete_url; } /** * 获取标签成员 * @param tagid 标签ID * */ public static String Get_Tag_Person(String tagid){ String get_tagperson_url = GET_TAG_PERSON.replace("ID", tagid); return get_tagperson_url; } /** * 增加标签成员 * @param tagid 标签ID * @param userlist 企业员工ID列表 格式:"userlist":[ "user1","user2"] * */ public static String Add_Tag_Person(String tagid,String userlist){ String PostData = "{\"tagid\": %s,\"userlist\":%s}"; return String.format(PostData, tagid,userlist); } /** * 删除标签成员 * @param tagid 标签ID * @param userlist 企业员工ID列表 格式:"userlist":[ "user1","user2"] * */ public static String Delete_Tag_Person(String tagid,String userlist){ String PostData = "{\"tagid\": %s,\"userlist\":%s}"; return String.format(PostData, tagid,userlist); } //示例 public static void main(String[] args) { /** * 创建标签示例 * */ // 调取凭证 String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken(); // 拼装数据 String PostData = Create_Tag("新建标签"); // 提交数据,获取结果 int result = WeixinUtil.PostMessage(access_token, "POST", CREATE_TAG_URL, PostData); // 打印结果 if(0==result){ System.out.println("操作成功"); } else { System.out.println("操作失败"); } } }
其中WeixinUtil的getAccessToken()和PostMessage()是通用方法,主要是方便调用,减少代码量,下面看看这2个方法的代码
<span style="font-family: Arial, Helvetica, sans-serif;">getAccessToken()</span>
/** * 获取access_token * * @param CorpID 企业Id * @param SECRET 管理组的凭证密钥,每个secret代表了对应用、通讯录、接口的不同权限;不同的管理组拥有不同的secret * @return */ public static AccessToken getAccessToken(String corpID, String secret) { AccessToken accessToken = null; String requestUrl = access_token_url.replace("CorpID", corpID).replace("SECRET", secret); JSONObject jsonObject = HttpRequest(requestUrl, "GET", null); // 如果请求成功 if (null != jsonObject) { try { accessToken = new AccessToken(); accessToken.setToken(jsonObject.getString("access_token")); accessToken.setExpiresIn(jsonObject.getInt("expires_in")); System.out.println("获取token成功:"+jsonObject.getString("access_token")+"————"+jsonObject.getInt("expires_in")); } catch (Exception e) { accessToken = null; // 获取token失败 String error = String.format("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg")); System.out.println(error); } } return accessToken; }
<strong>PostMessage():</strong>
/** * 数据提交与请求通用方法 * @param access_token 凭证 * @param RequestMt 请求方式 * @param RequestURL 请求地址 * @param outstr 提交json数据 * */ public static int PostMessage(String access_token ,String RequestMt , String RequestURL , String outstr){ int result = 0; RequestURL = RequestURL.replace("ACCESS_TOKEN", access_token); JSONObject jsonobject = WeixinUtil.HttpRequest(RequestURL, RequestMt, outstr); if (null != jsonobject) { if (0 != jsonobject.getInt("errcode")) { result = jsonobject.getInt("errcode"); String error = String.format("操作失败 errcode:{} errmsg:{}", jsonobject.getInt("errcode"), jsonobject.getString("errmsg")); System.out.println(error); } } return result; }
HttpRequest():
/** * 发起https请求并获取结果 * * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */ public static JSONObject HttpRequest(String request , String RequestMethod , String output ){ @SuppressWarnings("unused") JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); try { //建立连接 URL url = new URL(request); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); connection.setRequestMethod(RequestMethod); if(output!=null){ OutputStream out = connection.getOutputStream(); out.write(output.getBytes("UTF-8")); out.close(); } //流处理 InputStream input = connection.getInputStream(); InputStreamReader inputReader = new InputStreamReader(input,"UTF-8"); BufferedReader reader = new BufferedReader(inputReader); String line; while((line=reader.readLine())!=null){ buffer.append(line); } //关闭连接、释放资源 reader.close(); inputReader.close(); input.close(); input = null; connection.disconnect(); jsonObject = JSONObject.fromObject(buffer.toString()); } catch (Exception e) { } return jsonObject; }
以上就是管理通讯录接口的主要接口
新建部门:
新建成员:
新建标签:
有疑问请再次留言,看到第一时间回复,谢谢大家观看本博!