文档地址:构造网页授权链接 - 接口文档 - 企业微信开发者中心
注意:
1.redirect_uri:回调链接地址,需要使用urlencode对链接进行处理
2.scope:如果需要获取成员的头像、手机号等信息需要设为snsapi_privateinfo
例如前端地址为:https://test.com
构造成的链接为:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=https%3A%2F%2Ftest.com&response_type=code&scope=snsapi_privateinfo&state=STATE&agentid=AGENTID#wechat_redirect
已管理员身份登录企业微信后台-应用管理-创建应用:
设置可信域名以及可信IP:
添加之后可以在企业微信-工作台中找到相关的应用,点击后会跳转到https://test.com?code=CODE,可以通过code请求后端获取到用户的相关信息
接口文档:获取访问用户身份 - 接口文档 - 企业微信开发者中心
以下为JAVA使用 weixin-java-cp的实现代码
<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-cp</artifactId><version>4.0.0</version>
</dependency>
QYWeixinProperties qyWeixinProperties = SpringUtil.getBean(QYWeixinProperties.class);// 企业微信相关配置
WxCpDefaultConfigImpl config = new WxCpDefaultConfigImpl();
config.setCorpId(qyWeixinProperties.getCorpId());
config.setCorpSecret(qyWeixinProperties.getCorpSecret());
config.setAgentId(qyWeixinProperties.getAgentId());WxCpServiceImpl wxCpService = new WxCpServiceImpl();
wxCpService.setWxCpConfigStorage(config);String mobile;try {WxCpOauth2UserInfo userInfo = wxCpService.getOauth2Service().getUserInfo(code);if (Func.notNull(userInfo)) {String userId = userInfo.getUserId();// 用户userIdif (Func.isBlank(userId)) {return;}// 根据userId查询微信中用户详情,注意需要构造链接中scope=snsapi_privateinfo且用户授权才能获取到WxCpUserDetail userDetail = wxCpService.getOauth2Service().getUserDetail(userInfo.getUserTicket());mobile = userDetail.getMobile();if (Func.isBlank(mobile)) {return;}// 接下来是通过手机号获取用户信息的逻辑,按照自己系统的逻辑来写} else {return;}
} catch (WxErrorException e) {return;
}