关于企业微信的免登以及用户组获取工具的使用
工具源码 : https://github.com/svmachine/WeChat.git
jar包下载 : https://github.com/svmachine/WeChat/blob/master/WeChatUtil.jar
部署使用说明
1.初始化
需要自定义listener,在contextInitialized方法中初始化钉钉api执行的必要条件环境
@Override public void contextInitialized(ServletContextEvent sce) { DefaultContext.init(String corpSecret, String corpId, String addressCorpSecret); }
2.企业微信应用中免登url的格式
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI &response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect
说明:
redirect_uri : 授权后重定向的回调链接地址,请使用urlencode对链接进行处理
scope :
snsapi_base:静默授权,可获取成员的的基础信息(UserId与DeviceId);
snsapi_userinfo:静默授权,可获取成员的详细信息,但不包含手机、邮箱;
snsapi_privateinfo:手动授权,可获取成员的详细信息,包含手机、邮箱
agentid、state为非必须参数
3.在后台接收处理redirect_uri请求,企业微信认证后会在redirect_uri 后添加code参数(redirect_uri?code=****),获取code后,调用如下方法获取登录用户详细信息,执行第三方免登操作。
WeChatUtil.getUserInfoByCode(code); //获取登录用户信息,包含userId以及user_ticket CommonUtil.getValue(userInfoByCode, "user_ticket"); //获取user_ticket WeChatUtil.getUserInfoByUserTicket(user_ticket); //根据user_ticket获取详细用户信息
4.获取企业微信部门,用户信息
调用WeChatUserAndGroup类中的方法即可。
getDepartment(int departmentId); //获取指定部门id下的子部门信息 getDepartment(); //获取全量部门信息 getUserByDepartmentId(int departmentId, int fetch_child); //获取指定部门id下所有用户的详细信息, fetch_child 表示是否递归获取所有的 getUserByDepartmentId(int departmentId); //获取指定部门id下所有用户的详细信息,非递归 getUserByUserId(String userId); //根据userId获取用户信息