Skip to content

Commit 5247627

Browse files
authored
🆕 #3524 【小程序】添加多端登录 code2VerifyInfo 接口的支持
1 parent f7a196c commit 5247627

File tree

4 files changed

+72
-0
lines changed

4 files changed

+72
-0
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.binarywang.wx.miniapp.api;
22

3+
import cn.binarywang.wx.miniapp.bean.WxMaCode2VerifyInfoResult;
34
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
45
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
56
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
@@ -87,4 +88,18 @@ public interface WxMaUserService {
8788
* @return .
8889
*/
8990
boolean checkUserInfo(String sessionKey, String rawData, String signature);
91+
92+
/**
93+
* 多端登录验证接口.
94+
* <p>
95+
* 通过 code 换取用户登录态信息,用于多端登录场景(如手表端)。
96+
* </p>
97+
* 文档地址:<a href="https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/openapi/code2Verifyinfo.html">多端登录</a>
98+
*
99+
* @param code 登录时获取的 code
100+
* @param checkcode 手表授权页面返回的 checkcode
101+
* @return 登录验证结果,包含 session_key、openid、unionid 和 is_limit 字段
102+
* @throws WxErrorException 调用微信接口失败时抛出
103+
*/
104+
WxMaCode2VerifyInfoResult getCode2VerifyInfo(String code, String checkcode) throws WxErrorException;
90105
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.binarywang.wx.miniapp.api.WxMaService;
44
import cn.binarywang.wx.miniapp.api.WxMaUserService;
5+
import cn.binarywang.wx.miniapp.bean.WxMaCode2VerifyInfoResult;
56
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
67
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
78
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
@@ -18,6 +19,7 @@
1819

1920
import java.util.Map;
2021

22+
import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.User.CODE_2_VERIFY_INFO_URL;
2123
import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.User.GET_PHONE_NUMBER_URL;
2224
import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.User.SET_USER_STORAGE;
2325

@@ -86,4 +88,13 @@ public boolean checkUserInfo(String sessionKey, String rawData, String signature
8688
return generatedSignature.equals(signature);
8789
}
8890

91+
@Override
92+
public WxMaCode2VerifyInfoResult getCode2VerifyInfo(String code, String checkcode) throws WxErrorException {
93+
JsonObject param = new JsonObject();
94+
param.addProperty("code", code);
95+
param.addProperty("checkcode", checkcode);
96+
String responseContent = this.service.post(CODE_2_VERIFY_INFO_URL, param.toString());
97+
return WxMaCode2VerifyInfoResult.fromJson(responseContent);
98+
}
99+
89100
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package cn.binarywang.wx.miniapp.bean;
2+
3+
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
8+
import java.io.Serializable;
9+
10+
/**
11+
* <pre>
12+
* 多端登录验证接口的响应
13+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/openapi/code2Verifyinfo.html
14+
*
15+
* 微信返回报文:{"errcode": 0, "errmsg": "ok", "session_key":"xxx", "openid":"xxx", "unionid":"xxx", "is_limit": false}
16+
* </pre>
17+
*
18+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
19+
*/
20+
@Data
21+
@EqualsAndHashCode(callSuper = false)
22+
public class WxMaCode2VerifyInfoResult implements Serializable {
23+
private static final long serialVersionUID = -2468325025088437364L;
24+
25+
@SerializedName("session_key")
26+
private String sessionKey;
27+
28+
@SerializedName("openid")
29+
private String openid;
30+
31+
@SerializedName("unionid")
32+
private String unionid;
33+
34+
/**
35+
* 是否为受限用户
36+
*/
37+
@SerializedName("is_limit")
38+
private Boolean isLimit;
39+
40+
public static WxMaCode2VerifyInfoResult fromJson(String json) {
41+
return WxMaGsonBuilder.create().fromJson(json, WxMaCode2VerifyInfoResult.class);
42+
}
43+
44+
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ public interface User {
364364
String SET_USER_STORAGE =
365365
"https://api.weixin.qq.com/wxa/set_user_storage?appid=%s&signature=%s&openid=%s&sig_method=%s";
366366
String GET_PHONE_NUMBER_URL = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
367+
/** 多端登录验证接口 */
368+
String CODE_2_VERIFY_INFO_URL = "https://api.weixin.qq.com/wxa/sec/checkcode2verifyinfo";
367369
}
368370

369371
public interface Ocr {

0 commit comments

Comments
 (0)