10000 :new: #1873 【企业微信】第三方应用增加网页授权登陆获取访问用户身份和获取访问用户敏感信息的接口 · binarywang/WxJava@c80e77c · GitHub
[go: up one dir, main page]

Skip to content

Commit c80e77c

Browse files
authored
🆕 #1873 【企业微信】第三方应用增加网页授权登陆获取访问用户身份和获取访问用户敏感信息的接口
1 parent 64d67bb commit c80e77c

File tree

5 files changed

+157
-4
lines changed

5 files changed

+157
-4
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
6+
7+
/**
8+
*
9+
* @author huangxiaoming
10+
*/
11+
@Data
12+
public class WxCpTpUserDetail extends WxCpBaseResp {
13+
14+
private static final long serialVersionUID = -5028321625140879571L;
15+
/**
16+
* 用户所属企业的corpid
17+
*/
18+
@SerializedName("corpid")
19+
private String corpId;
20+
21+
/**
22+
* 成员UserID
23+
*/
24+
@SerializedName("userid")
25+
private String userId;
26+
27+
/**
28+
* 成员姓名
29+
*/
30+
@SerializedName("name")
31+
private String name;
32+
33+
/**
34+
* 性别。0表示未定义,1表示男性,2表示女性
35+
*/
36+
@SerializedName("gender")
37+
private String gender;
38+
39+
/**
40+
* 头像url。仅在用户同意snsapi_privateinfo授权时返回
41+
*/
42+
@SerializedName("avatar")
43+
private String avatar;
44+
45+
/**
46+
* 员工个人二维码(扫描可添加为外部联系人),仅在用户同意snsapi_privateinfo授权时返回
47+
*/
48+
@SerializedName("qr_code")
49+
private String qrCode;
50+
51+
public static WxCpTpUserDetail fromJson(String json) {
52+
return WxCpGsonBuilder.create().fromJson(json, WxCpTpUserDetail.class);
53+
}
54+
55+
public String toJson() {
56+
return WxCpGsonBuilder.create().toJson(this);
57+
}
58+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
6+
7+
/**
8+
* @author huangxiaoming
9+
*/
10+
@Data
11+
public class WxCpTpUserInfo extends WxCpBaseResp {
12+
13+
private static final long serialVersionUID = -5028321625140879571L;
14+
15+
/**
16+
* 用户所属企业的corpid
17+
*/
18+
@SerializedName("CorpId")
19+
private String corpId;
20+
21+
/**
22+
* 用户在企业内的UserID,如果该企业与第三方应用有授权关系时,返回明文UserId,否则返回密文UserId
23+
*/
24+
@SerializedName("UserId")
25+
private String userId;
26+
27+
/**
28+
* 手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响)
29+
*/
30+
@SerializedName("DeviceId")
31+
private String deviceId;
32+
33+
/**
34+
* 成员票据,最大为512字节。
35+
* scope为snsapi_userinfo或snsapi_privateinfo,且用户在应用可见范围之内时返回此参数。
36+
* 后续利用该参数可以获取用户信息或敏感信息,参见:https://work.weixin.qq.com/api/doc/90001/90143/91122
37+
*/
38+
@SerializedName("user_ticket")
39+
private String userTicket;
40+
41+
/**
42+
* user_ticket的有效时间(秒),随user_ticket一起返回
43+
*/
44+
@SerializedName("expires_in")
45+
private String expiresIn;
46+
47+
/**
48+
* 全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的open_userid是相同的,最多64个字节。仅第三方应用可获取
49+
*/
50+
@SerializedName("open_userid")
51+
private String openUserId;
52+
53+
public static WxCpTpUserInfo fromJson(String json) {
54+
return WxCpGsonBuilder.create().fromJson(json, WxCpTpUserInfo.class);
55+
}
56+
57+
public String toJson() {
58+
return WxCpGsonBuilder.create().toJson(this);
59+
}
60+
61+
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ public static class Tp {
142142
public static final String GET_AUTH_INFO = "/cgi-bin/service/get_auth_info";
143143
public static final String GET_AUTH_CORP_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket";
144144
public static final String GET_SUITE_JSAPI_TICKET = "/cgi-bin/ticket/get";
145+
public static final String GET_USERINFO3RD = "/cgi-bin/service/getuserinfo3rd";
146+
public static final String GET_USERDETAIL3RD = "/cgi-bin/service/getuserdetail3rd";
145147
}
146148

147149
@UtilityClass

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
77
import me.chanjar.weixin.common.util.http.RequestExecutor;
88
import me.chanjar.weixin.common.util.http.RequestHttp;
9-
import me.chanjar.weixin.cp.bean.WxCpMaJsCode2SessionResult;
10-
import me.chanjar.weixin.cp.bean.WxCpTpAuthInfo;
11-
import me.chanjar.weixin.cp.bean.WxCpTpCorp;
12-
import me.chanjar.weixin.cp.bean.WxCpTpPermanentCodeInfo;
9+
import me.chanjar.weixin.cp.bean.*;
1310
import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;
1411

1512
/**
@@ -266,4 +263,24 @@ public interface WxCpTpService {
266263
* @return WxSessionManager session manager
267264
*/
268265
WxSessionManager getSessionManager();
266+
267+
/**
268+
* <pre>
269+
* 获取访问用户身份
270+
* </pre>
271+
*
272+
* @param code
273+
* @return
274+
*/
275+
WxCpTpUserInfo getUserInfo3rd(String code) throws WxErrorException;
276+
277+
/**
278+
* <pre>
279+
* 获取访问用户敏感信息
280+
* </pre>
281+
*
282+
* @param userTicket
283+
* @return
284+
*/
285+
WxCpTpUserDetail getUserDetail3rd(String userTicket) throws WxErrorException;
269286
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,4 +342,19 @@ public WxSessionManager getSessionManager() {
342342
return this.sessionManager;
343343
}
344344

345+
@Override
346+
public WxCpTpUserInfo getUserInfo3rd(String code) throws WxErrorException{
347+
String url = configStorage.getApiUrl(GET_USERINFO3RD);
348+
String result = get(url+"?code="+code,null);
349+
return WxCpTpUserInfo.fromJson(result);
350+
}
351+
352+
@Override
353+
public WxCpTpUserDetail getUserDetail3rd(String userTicket) throws WxErrorException{
354+
JsonObject jsonObject = new JsonObject();
355+
jsonObject.addProperty("user_ticket", userTicket);
356+
String result = post(configStorage.getApiUrl(GET_USERDETAIL3RD), jsonObject.toString());
357+
return WxCpTpUserDetail.fromJson(result);
358+
}
359+
345360
}

0 commit comments

Comments
 (0)
0