前言
这篇文章原本应该是和上一篇连着一起写出来的,但是我感觉吧分开写比较清晰一点。。
本文主要实现目的目标需求为:企业微信登录获取人员信息
概述
直接进入正文,本文需要用到的参数为 code 和 access_token
1.获取 code 请看:企业微信开发:网页授权登录
2.获取 access_token 请看:企业微信开发:获取 access_token
根据已经获取的 access_token 和 code 换成员信息
请求方式: GET(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
code | 是 | 通过网页授权获取到的code,最大为512字节。每次授权带上的 code 将不一样,code只能使用一次,5分钟未被使用自动过期 |
代码片段
这个是我自定义的一个工具类,主要是用来获取成员信息的 ,返回值可定义为 String 或者自定义对象这个地方就不提供了
/**
* @ClassName:UserIDAPI
* @Description:TODO 获取访问用户身份
* @Author LinLuoChen
* @Date 2020/8/13/15:17
* @Version V1.0
**/
public class UserIdAPI {
// 企业微信获取访问用户身份
private final static String qy_user_url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE";
//获取访问用户身份
public static UserID getUserIdInfo(String ACCESSTOKEN,String CODE){
UserID userID = new UserID();
String requestURL = qy_user_url.replace("ACCESSTOKEN", ACCESSTOKEN).replace( "CODE", CODE);
JSONObject jsonObject = HttpRequestUtil.httpRequest(requestURL, EnumMethod.GET.name(), null);
// 如果请求成功
if (jsonObject != null) {
try {
System.out.println("获取访问用户身份接口返回信息:"+jsonObject);
// 这个地方我只拿了我用的
userID.setUserId(jsonObject.getString("UserId"));
userID.setDeviceId(jsonObject.getString("DeviceId"));
} catch (Exception e) {
userID = null;
}
}
// 返回类型可自定义
return userID;
}
}
调用方法
public static void main(String[] args) {
UserID userID = UserIdAPI.getUserIdInfo(accessToken,code);
System.out.println("获取用户信息为:"+userID);
}
测试结果
当用户为企业成员时返回示例如下
{
"errcode": 0,
"errmsg": "ok",
"UserId":"USERID",
"DeviceId":"DEVICEID",
"user_ticket": "USER_TICKET",
"expires_in":7200
}
参数说明:
参数 | 说明 |
---|---|
errcode | 返回码 |
errmsg | 对返回码的文本描述内容 |
UserId | 成员UserID |
DeviceId | 手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响) |
user_ticket | 成员票据,最大为512字节。 scope为snsapi_userinfo或snsapi_privateinfo,且用户在应用可见范围之内时返回此参数。 后续利用该参数可以获取用户信息或敏感信息。 |
expires_in | user_ticket的有效时间(秒),随user_ticket一起返回 |
非企业成员授权时返回示例如下
{
"errcode": 0,
"errmsg": "ok",
"OpenId":"OPENID",
"DeviceId":"DEVICEID"
}
参数 | 说明 |
---|---|
errcode | 返回码 |
errmsg | 对返回码的文本描述内容 |
OpenId | 非企业成员的标识,对当前企业唯一 |
DeviceId | 手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响) |
出错返回示例:
{
"errcode": 40029,
"errmsg": "invalid code"
}