⬆️ 升级 simple-json(未发布)

This commit is contained in:
yadong.zhang 2023-08-06 17:48:35 +08:00
parent 765127e847
commit 779447a543
44 changed files with 353 additions and 300 deletions

14
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>me.zhyd.oauth</groupId> <groupId>me.zhyd.oauth</groupId>
<artifactId>JustAuth</artifactId> <artifactId>JustAuth</artifactId>
<version>1.16.5</version> <version>1.16.6</version>
<name>JustAuth</name> <name>JustAuth</name>
<url>https://gitee.com/yadong.zhang/JustAuth</url> <url>https://gitee.com/yadong.zhang/JustAuth</url>
@ -58,9 +58,9 @@
<maven-gpg-version>1.6</maven-gpg-version> <maven-gpg-version>1.6</maven-gpg-version>
<maven.test.skip>false</maven.test.skip> <maven.test.skip>false</maven.test.skip>
<simple-http.version>1.0.5</simple-http.version> <simple-http.version>1.0.5</simple-http.version>
<simple-json.version>0.0.4</simple-json.version>
<lombok-version>1.18.20</lombok-version> <lombok-version>1.18.20</lombok-version>
<junit-version>4.13.2</junit-version> <junit-version>4.13.2</junit-version>
<fastjson-version>1.2.83</fastjson-version>
<alipay-sdk-version>4.17.5.ALL</alipay-sdk-version> <alipay-sdk-version>4.17.5.ALL</alipay-sdk-version>
<jacoco-version>0.8.2</jacoco-version> <jacoco-version>0.8.2</jacoco-version>
</properties> </properties>
@ -77,17 +77,17 @@
<artifactId>simple-http</artifactId> <artifactId>simple-http</artifactId>
<version>${simple-http.version}</version> <version>${simple-http.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.xkcoding.json</groupId>
<artifactId>simple-json</artifactId>
<version>${simple-json.version}</version>
</dependency>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>${junit-version}</version> <version>${junit-version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson-version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.alipay.sdk</groupId> <groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId> <artifactId>alipay-sdk-java</artifactId>

View File

@ -1,9 +1,10 @@
package me.zhyd.oauth.model; package me.zhyd.oauth.model;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.util.Kv;
import lombok.*; import lombok.*;
import me.zhyd.oauth.enums.AuthUserGender; import me.zhyd.oauth.enums.AuthUserGender;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map;
/** /**
* 授权成功后的用户信息根据授权平台的不同获取的数据完整性也不同 * 授权成功后的用户信息根据授权平台的不同获取的数据完整性也不同
@ -70,7 +71,7 @@ public class AuthUser implements Serializable {
/** /**
* 第三方平台返回的原始用户信息 * 第三方平台返回的原始用户信息
*/ */
private JSONObject rawUserInfo; private Map<String, Object> rawUserInfo;
/** /**
* 微信公众号 - 网页授权的登录时可用 * 微信公众号 - 网页授权的登录时可用

View File

@ -1,7 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSON; import com.xkcoding.json.JsonUtil;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.config.AuthSource;
@ -41,14 +41,14 @@ public abstract class AbstractAuthDingtalkRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String code = authToken.getAccessCode(); String code = authToken.getAccessCode();
JSONObject param = new JSONObject(); Kv param = new Kv();
param.put("tmp_auth_code", code); param.put("tmp_auth_code", code);
String response = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), param.toJSONString()).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), JsonUtil.toJsonString(param)).getBody();
JSONObject object = JSON.parseObject(response); Kv object = JsonUtil.parseKv(response);
if (object.getIntValue("errcode") != 0) { if (object.getIntValue("errcode") != 0) {
throw new AuthException(object.getString("errmsg")); throw new AuthException(object.getString("errmsg"));
} }
object = object.getJSONObject("user_info"); object = JsonUtil.parseKv(object.getString("user_info"));
AuthToken token = AuthToken.builder() AuthToken token = AuthToken.builder()
.openId(object.getString("openid")) .openId(object.getString("openid"))
.unionId(object.getString("unionid")) .unionId(object.getString("unionid"))

View File

@ -1,8 +1,9 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import com.xkcoding.http.util.MapUtil; import com.xkcoding.http.util.MapUtil;
import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.config.AuthSource;
@ -54,7 +55,7 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
Map<String, String> form = MapUtil.parseStringToMap(accessTokenUrl, false); Map<String, String> form = MapUtil.parseStringToMap(accessTokenUrl, false);
String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, form, httpHeader, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, form, httpHeader, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
@ -72,7 +73,7 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }
@ -88,7 +89,7 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
httpHeader.add("Authorization", jwt); httpHeader.add("Authorization", jwt);
String userInfo = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false).getBody(); String userInfo = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.config.AuthSource;
@ -37,7 +38,7 @@ public abstract class AbstractAuthWeChatEnterpriseRequest extends AuthDefaultReq
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doGetAuthorizationCode(accessTokenUrl(null)); String response = doGetAuthorizationCode(accessTokenUrl(null));
JSONObject object = this.checkResponse(response); Kv object = JsonUtil.parseKv(response);
return AuthToken.builder() return AuthToken.builder()
.accessToken(object.getString("access_token")) .accessToken(object.getString("access_token"))
@ -49,7 +50,7 @@ public abstract class AbstractAuthWeChatEnterpriseRequest extends AuthDefaultReq
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = this.checkResponse(response); Kv object = this.checkResponse(response);
// 返回 OpenId 或其他均代表非当前企业用户不支持 // 返回 OpenId 或其他均代表非当前企业用户不支持
if (!object.containsKey("UserId")) { if (!object.containsKey("UserId")) {
@ -57,7 +58,7 @@ public abstract class AbstractAuthWeChatEnterpriseRequest extends AuthDefaultReq
} }
String userId = object.getString("UserId"); String userId = object.getString("UserId");
String userTicket = object.getString("user_ticket"); String userTicket = object.getString("user_ticket");
JSONObject userDetail = getUserDetail(authToken.getAccessToken(), userId, userTicket); Kv userDetail = getUserDetail(authToken.getAccessToken(), userId, userTicket);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(userDetail) .rawUserInfo(userDetail)
@ -79,8 +80,8 @@ public abstract class AbstractAuthWeChatEnterpriseRequest extends AuthDefaultReq
* @param response 请求结果 * @param response 请求结果
* @return 如果请求结果正常则返回JSONObject * @return 如果请求结果正常则返回JSONObject
*/ */
private JSONObject checkResponse(String response) { private Kv checkResponse(String response) {
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
if (object.containsKey("errcode") && object.getIntValue("errcode") != 0) { if (object.containsKey("errcode") && object.getIntValue("errcode") != 0) {
throw new AuthException(object.getString("errmsg"), source); throw new AuthException(object.getString("errmsg"), source);
@ -126,24 +127,24 @@ public abstract class AbstractAuthWeChatEnterpriseRequest extends AuthDefaultReq
* @param userTicket 成员票据用于获取用户信息或敏感信息 * @param userTicket 成员票据用于获取用户信息或敏感信息
* @return 用户详情 * @return 用户详情
*/ */
private JSONObject getUserDetail(String accessToken, String userId, String userTicket) { private Kv getUserDetail(String accessToken, String userId, String userTicket) {
// 用户基础信息 // 用户基础信息
String userInfoUrl = UrlBuilder.fromBaseUrl("https://qyapi.weixin.qq.com/cgi-bin/user/get") String userInfoUrl = UrlBuilder.fromBaseUrl("https://qyapi.weixin.qq.com/cgi-bin/user/get")
.queryParam("access_token", accessToken) .queryParam("access_token", accessToken)
.queryParam("userid", userId) .queryParam("userid", userId)
.build(); .build();
String userInfoResponse = new HttpUtils(config.getHttpConfig()).get(userInfoUrl).getBody(); String userInfoResponse = new HttpUtils(config.getHttpConfig()).get(userInfoUrl).getBody();
JSONObject userInfo = checkResponse(userInfoResponse); Kv userInfo = checkResponse(userInfoResponse);
// 用户敏感信息 // 用户敏感信息
if (StringUtils.isNotEmpty(userTicket)) { if (StringUtils.isNotEmpty(userTicket)) {
String userDetailUrl = UrlBuilder.fromBaseUrl("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail") String userDetailUrl = UrlBuilder.fromBaseUrl("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail")
.queryParam("access_token", accessToken) .queryParam("access_token", accessToken)
.build(); .build();
JSONObject param = new JSONObject(); Kv param = new Kv();
param.put("user_ticket", userTicket); param.put("user_ticket", userTicket);
String userDetailResponse = new HttpUtils(config.getHttpConfig()).post(userDetailUrl, param.toJSONString()).getBody(); String userDetailResponse = new HttpUtils(config.getHttpConfig()).post(userDetailUrl, JsonUtil.toJsonString(param)).getBody();
JSONObject userDetail = checkResponse(userDetailResponse); Kv userDetail = checkResponse(userDetailResponse);
userInfo.putAll(userDetail); userInfo.putAll(userDetail);
} }

View File

@ -1,6 +1,5 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient; import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient; import com.alipay.api.DefaultAlipayClient;
@ -8,6 +7,7 @@ import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.request.AlipayUserInfoShareRequest; import com.alipay.api.request.AlipayUserInfoShareRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserInfoShareResponse;
import com.xkcoding.json.JsonUtil;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -217,7 +217,7 @@ public class AuthAlipayRequest extends AuthDefaultRequest {
String location = String.format("%s %s", StringUtils.isEmpty(province) ? "" : province, StringUtils.isEmpty(city) ? "" : city); String location = String.format("%s %s", StringUtils.isEmpty(province) ? "" : province, StringUtils.isEmpty(city) ? "" : city);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(JSONObject.parseObject(JSONObject.toJSONString(response))) .rawUserInfo(JsonUtil.parseKv(JsonUtil.toJsonString(response)))
.uuid(response.getUserId()) .uuid(response.getUserId())
.username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName()) .username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName())
.nickname(response.getNickName()) .nickname(response.getNickName())

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -28,7 +29,7 @@ public class AuthAliyunRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
.expireIn(accessTokenObject.getIntValue("expires_in")) .expireIn(accessTokenObject.getIntValue("expires_in"))
@ -41,7 +42,7 @@ public class AuthAliyunRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken); String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
.uuid(object.getString("sub")) .uuid(object.getString("sub"))

View File

@ -1,9 +1,10 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.http.constants.Constants; import com.xkcoding.http.constants.Constants;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import com.xkcoding.http.util.UrlUtil; import com.xkcoding.http.util.UrlUtil;
import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -112,24 +113,24 @@ public class AuthAmazonRequest extends AuthDefaultRequest {
httpHeader.add("Host", "api.amazon.com"); httpHeader.add("Host", "api.amazon.com");
httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8"); httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8");
String response = new HttpUtils(config.getHttpConfig()).post(url, param, httpHeader, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(url, param, httpHeader, false).getBody();
JSONObject jsonObject = JSONObject.parseObject(response); Kv kv = JsonUtil.parseKv(response);
this.checkResponse(jsonObject); this.checkResponse(kv);
return AuthToken.builder() return AuthToken.builder()
.accessToken(jsonObject.getString("access_token")) .accessToken(kv.getString("access_token"))
.tokenType(jsonObject.getString("token_type")) .tokenType(kv.getString("token_type"))
.expireIn(jsonObject.getIntValue("expires_in")) .expireIn(kv.getIntValue("expires_in"))
.refreshToken(jsonObject.getString("refresh_token")) .refreshToken(kv.getString("refresh_token"))
.build(); .build();
} }
/** /**
* 校验响应内容是否正确 * 校验响应内容是否正确
* *
* @param jsonObject 响应内容 * @param response 响应内容
*/ */
private void checkResponse(JSONObject jsonObject) { private void checkResponse(Kv response) {
if (jsonObject.containsKey("error")) { if (response.containsKey("error")) {
throw new AuthException(jsonObject.getString("error_description").concat(" ") + jsonObject.getString("error_description")); throw new AuthException(response.getString("error_description").concat(" ") + response.getString("error_description"));
} }
} }
@ -148,15 +149,15 @@ public class AuthAmazonRequest extends AuthDefaultRequest {
httpHeader.add("Host", "api.amazon.com"); httpHeader.add("Host", "api.amazon.com");
httpHeader.add("Authorization", "bearer " + accessToken); httpHeader.add("Authorization", "bearer " + accessToken);
String userInfo = new HttpUtils(config.getHttpConfig()).get(this.source.userInfo(), new HashMap<>(0), httpHeader, false).getBody(); String userInfo = new HttpUtils(config.getHttpConfig()).get(this.source.userInfo(), new HashMap<>(0), httpHeader, false).getBody();
JSONObject jsonObject = JSONObject.parseObject(userInfo); Kv kv = JsonUtil.parseKv(userInfo);
this.checkResponse(jsonObject); this.checkResponse(kv);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(jsonObject) .rawUserInfo(kv)
.uuid(jsonObject.getString("user_id")) .uuid(kv.getString("user_id"))
.username(jsonObject.getString("name")) .username(kv.getString("name"))
.nickname(jsonObject.getString("name")) .nickname(kv.getString("name"))
.email(jsonObject.getString("email")) .email(kv.getString("email"))
.gender(AuthUserGender.UNKNOWN) .gender(AuthUserGender.UNKNOWN)
.source(source.toString()) .source(source.toString())
.token(authToken) .token(authToken)
@ -165,8 +166,8 @@ public class AuthAmazonRequest extends AuthDefaultRequest {
private void checkToken(String accessToken) { private void checkToken(String accessToken) {
String tokenInfo = new HttpUtils(config.getHttpConfig()).get("https://api.amazon.com/auth/o2/tokeninfo?access_token=" + UrlUtil.urlEncode(accessToken)).getBody(); String tokenInfo = new HttpUtils(config.getHttpConfig()).get("https://api.amazon.com/auth/o2/tokeninfo?access_token=" + UrlUtil.urlEncode(accessToken)).getBody();
JSONObject jsonObject = JSONObject.parseObject(tokenInfo); Kv kv = JsonUtil.parseKv(tokenInfo);
if (!config.getClientId().equals(jsonObject.getString("aud"))) { if (!config.getClientId().equals(kv.getString("aud"))) {
throw new AuthException(AuthResponseStatus.ILLEGAL_TOKEN); throw new AuthException(AuthResponseStatus.ILLEGAL_TOKEN);
} }
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -50,7 +51,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken); String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -65,7 +66,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
.build(); .build();
} }
private String getAvatar(JSONObject object) { private String getAvatar(Kv object) {
String protrait = object.getString("portrait"); String protrait = object.getString("portrait");
return StringUtils.isEmpty(protrait) ? null : String.format("http://himg.bdimg.com/sys/portrait/item/%s.jpg", protrait); return StringUtils.isEmpty(protrait) ? null : String.format("http://himg.bdimg.com/sys/portrait/item/%s.jpg", protrait);
} }
@ -73,7 +74,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
@Override @Override
public AuthResponse revoke(AuthToken authToken) { public AuthResponse revoke(AuthToken authToken) {
String response = doGetRevoke(authToken); String response = doGetRevoke(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
// 返回1表示取消授权成功否则失败 // 返回1表示取消授权成功否则失败
AuthResponseStatus status = object.getIntValue("result") == 1 ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE; AuthResponseStatus status = object.getIntValue("result") == 1 ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE;
@ -115,7 +116,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error") || object.containsKey("error_code")) { if (object.containsKey("error") || object.containsKey("error_code")) {
String msg = object.containsKey("error_description") ? object.getString("error_description") : object.getString("error_msg"); String msg = object.containsKey("error_description") ? object.getString("error_description") : object.getString("error_msg");
throw new AuthException(msg); throw new AuthException(msg);
@ -123,7 +124,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
} }
private AuthToken getAuthToken(String response) { private AuthToken getAuthToken(String response) {
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -32,7 +33,7 @@ public class AuthCodingRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doGetAuthorizationCode(authCallback.getCode()); String response = doGetAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -44,10 +45,10 @@ public class AuthCodingRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
object = object.getJSONObject("data"); object = JsonUtil.parseKv(object.getString("data"));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
.uuid(object.getString("id")) .uuid(object.getString("id"))
@ -70,7 +71,7 @@ public class AuthCodingRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.getIntValue("code") != 0) { if (object.getIntValue("code") != 0) {
throw new AuthException(object.getString("msg")); throw new AuthException(object.getString("msg"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -30,7 +31,7 @@ public class AuthCsdnRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build(); return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build();
} }
@ -38,7 +39,7 @@ public class AuthCsdnRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -57,7 +58,7 @@ public class AuthCsdnRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error_code")) { if (object.containsKey("error_code")) {
throw new AuthException(object.getString("error")); throw new AuthException(object.getString("error"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -41,9 +42,9 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject userInfoObject = JSONObject.parseObject(response); Kv userInfoObject = JsonUtil.parseKv(response);
this.checkResponse(userInfoObject); this.checkResponse(userInfoObject);
JSONObject object = userInfoObject.getJSONObject("data"); Kv object = JsonUtil.parseKv(userInfoObject.getString("data"));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
.uuid(object.getString("union_id")) .uuid(object.getString("union_id"))
@ -71,9 +72,9 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
String message = object.getString("message"); String message = object.getString("message");
JSONObject data = object.getJSONObject("data"); Kv data = JsonUtil.parseKv(object.getString("data"));
int errorCode = data.getIntValue("error_code"); int errorCode = data.getIntValue("error_code");
if ("error".equals(message) || errorCode != 0) { if ("error".equals(message) || errorCode != 0) {
throw new AuthException(errorCode, data.getString("description")); throw new AuthException(errorCode, data.getString("description"));
@ -88,9 +89,9 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
*/ */
private AuthToken getToken(String accessTokenUrl) { private AuthToken getToken(String accessTokenUrl) {
String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
JSONObject dataObj = object.getJSONObject("data"); Kv dataObj = JsonUtil.parseKv(object.getString("data"));
return AuthToken.builder() return AuthToken.builder()
.accessToken(dataObj.getString("access_token")) .accessToken(dataObj.getString("access_token"))
.openId(dataObj.getString("open_id")) .openId(dataObj.getString("open_id"))

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import com.xkcoding.http.constants.Constants; import com.xkcoding.http.constants.Constants;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
@ -53,7 +54,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true); HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true);
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, httpHeader, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, httpHeader, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -91,19 +92,19 @@ public class AuthElemeRequest extends AuthDefaultRequest {
paramsMap.put("signature", signature); paramsMap.put("signature", signature);
HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_JSON, requestId, false); HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_JSON, requestId, false);
String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), JSONObject.toJSONString(paramsMap), httpHeader).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), JsonUtil.toJsonString(paramsMap), httpHeader).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
// 校验请求 // 校验请求
if (object.containsKey("name")) { if (object.containsKey("name")) {
throw new AuthException(object.getString("message")); throw new AuthException(object.getString("message"));
} }
if (object.containsKey("error") && null != object.get("error")) { if (object.containsKey("error") && null != object.get("error")) {
throw new AuthException(object.getJSONObject("error").getString("message")); throw new AuthException(JsonUtil.parseKv(object.getString("error")).getString("message"));
} }
JSONObject result = object.getJSONObject("result"); Kv result = JsonUtil.parseKv(object.getString("result"));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(result) .rawUserInfo(result)
@ -125,7 +126,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true); HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true);
String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, httpHeader, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, httpHeader, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -169,7 +170,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
return (UuidUtils.getUUID() + "|" + System.currentTimeMillis()).toUpperCase(); return (UuidUtils.getUUID() + "|" + System.currentTimeMillis()).toUpperCase();
} }
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -32,7 +33,7 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -44,7 +45,7 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken); String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -61,11 +62,11 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
.build(); .build();
} }
private String getUserPicture(JSONObject object) { private String getUserPicture(Kv object) {
String picture = null; String picture = null;
if (object.containsKey("picture")) { if (object.containsKey("picture")) {
JSONObject pictureObj = object.getJSONObject("picture"); Kv pictureObj = JsonUtil.parseKv(object.getString("picture"));
pictureObj = pictureObj.getJSONObject("data"); pictureObj = JsonUtil.parseKv(object.getString("data"));
if (null != pictureObj) { if (null != pictureObj) {
picture = pictureObj.getString("url"); picture = pictureObj.getString("url");
} }
@ -92,9 +93,9 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getJSONObject("error").getString("message")); throw new AuthException(JsonUtil.parseKv(object.getString("error")).getString("message"));
} }
} }

View File

@ -1,7 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSON; import com.xkcoding.json.JsonUtil;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -52,22 +52,22 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
return cacheAppAccessToken; return cacheAppAccessToken;
} }
String url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/"; String url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/";
JSONObject requestObject = new JSONObject(); Kv requestObject = new Kv();
requestObject.put("app_id", config.getClientId()); requestObject.put("app_id", config.getClientId());
requestObject.put("app_secret", config.getClientSecret()); requestObject.put("app_secret", config.getClientSecret());
String response = new HttpUtils(config.getHttpConfig()).post(url, requestObject.toJSONString(), new HttpHeader() String response = new HttpUtils(config.getHttpConfig()).post(url, JsonUtil.toJsonString(requestObject), new HttpHeader()
.add("Content-Type", "application/json")).getBody(); .add("Content-Type", "application/json")).getBody();
JSONObject jsonObject = JSON.parseObject(response); Kv kv = JsonUtil.parseKv(response);
this.checkResponse(jsonObject); this.checkResponse(kv);
String appAccessToken = jsonObject.getString("app_access_token"); String appAccessToken = kv.getString("app_access_token");
// 缓存 app access token // 缓存 app access token
this.authStateCache.cache(cacheKey, appAccessToken, jsonObject.getLongValue("expire") * 1000); this.authStateCache.cache(cacheKey, appAccessToken, kv.getLongValue("expire") * 1000);
return appAccessToken; return appAccessToken;
} }
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
JSONObject requestObject = new JSONObject(); Kv requestObject = new Kv();
requestObject.put("app_access_token", this.getAppAccessToken()); requestObject.put("app_access_token", this.getAppAccessToken());
requestObject.put("grant_type", "authorization_code"); requestObject.put("grant_type", "authorization_code");
requestObject.put("code", authCallback.getCode()); requestObject.put("code", authCallback.getCode());
@ -81,9 +81,9 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
String response = new HttpUtils(config.getHttpConfig()).get(source.userInfo(), null, new HttpHeader() String response = new HttpUtils(config.getHttpConfig()).get(source.userInfo(), null, new HttpHeader()
.add("Content-Type", "application/json") .add("Content-Type", "application/json")
.add("Authorization", "Bearer " + accessToken), false).getBody(); .add("Authorization", "Bearer " + accessToken), false).getBody();
JSONObject object = JSON.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
JSONObject data = object.getJSONObject("data"); Kv data = JsonUtil.parseKv(object.getString("data"));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
.uuid(data.getString("union_id")) .uuid(data.getString("union_id"))
@ -99,7 +99,7 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse refresh(AuthToken authToken) {
JSONObject requestObject = new JSONObject(); Kv requestObject = new Kv();
requestObject.put("app_access_token", this.getAppAccessToken()); requestObject.put("app_access_token", this.getAppAccessToken());
requestObject.put("grant_type", "refresh_token"); requestObject.put("grant_type", "refresh_token");
requestObject.put("refresh_token", authToken.getRefreshToken()); requestObject.put("refresh_token", authToken.getRefreshToken());
@ -110,12 +110,12 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
} }
private AuthToken getToken(JSONObject param, String url) { private AuthToken getToken(Kv param, String url) {
String response = new HttpUtils(config.getHttpConfig()).post(url, param.toJSONString(), new HttpHeader() String response = new HttpUtils(config.getHttpConfig()).post(url, JsonUtil.toJsonString(param), new HttpHeader()
.add("Content-Type", "application/json")).getBody(); .add("Content-Type", "application/json")).getBody();
JSONObject jsonObject = JSON.parseObject(response); Kv kv = JsonUtil.parseKv(response);
this.checkResponse(jsonObject); this.checkResponse(kv);
JSONObject data = jsonObject.getJSONObject("data"); Kv data = JsonUtil.parseKv(kv.getString("data"));
return AuthToken.builder() return AuthToken.builder()
.accessToken(data.getString("access_token")) .accessToken(data.getString("access_token"))
.refreshToken(data.getString("refresh_token")) .refreshToken(data.getString("refresh_token"))
@ -138,11 +138,11 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
/** /**
* 校验响应内容是否正确 * 校验响应内容是否正确
* *
* @param jsonObject 响应内容 * @param kv 响应内容
*/ */
private void checkResponse(JSONObject jsonObject) { private void checkResponse(Kv kv) {
if (jsonObject.getIntValue("code") != 0) { if (kv.getIntValue("code") != 0) {
throw new AuthException(jsonObject.getString("message")); throw new AuthException(kv.getString("message"));
} }
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -32,7 +33,7 @@ public class AuthGiteeRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -46,7 +47,7 @@ public class AuthGiteeRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken); String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -70,7 +71,7 @@ public class AuthGiteeRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -53,7 +54,7 @@ public class AuthGithubRequest extends AuthDefaultRequest {
HttpHeader header = new HttpHeader(); HttpHeader header = new HttpHeader();
header.add("Authorization", "token " + authToken.getAccessToken()); header.add("Authorization", "token " + authToken.getAccessToken());
String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl(source.userInfo()).build(), null, header, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl(source.userInfo()).build(), null, header, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object.containsKey("error"), object.getString("error_description")); this.checkResponse(object.containsKey("error"), object.getString("error_description"));

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -32,7 +33,7 @@ public class AuthGitlabRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -48,7 +49,7 @@ public class AuthGitlabRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -69,7 +70,7 @@ public class AuthGitlabRequest extends AuthDefaultRequest {
.build(); .build();
} }
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
// oauth/token 验证异常 // oauth/token 验证异常
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
@ -35,7 +36,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -51,7 +52,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest {
HttpHeader httpHeader = new HttpHeader(); HttpHeader httpHeader = new HttpHeader();
httpHeader.add("Authorization", "Bearer " + authToken.getAccessToken()); httpHeader.add("Authorization", "Bearer " + authToken.getAccessToken());
String userInfo = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), null, httpHeader).getBody(); String userInfo = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), null, httpHeader).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -99,7 +100,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error") || object.containsKey("error_description")) { if (object.containsKey("error") || object.containsKey("error_description")) {
throw new AuthException(object.containsKey("error") + ":" + object.getString("error_description")); throw new AuthException(object.containsKey("error") + ":" + object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -74,7 +75,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
form.put("nsp_svc", "OpenUP.User.getInfo"); form.put("nsp_svc", "OpenUP.User.getInfo");
String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), form, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -111,7 +112,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
} }
private AuthToken getAuthToken(String response) { private AuthToken getAuthToken(String response) {
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -159,7 +160,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
* @param object obj * @param object obj
* @return AuthUserGender * @return AuthUserGender
*/ */
private AuthUserGender getRealGender(JSONObject object) { private AuthUserGender getRealGender(Kv object) {
int genderCodeInt = object.getIntValue("gender"); int genderCodeInt = object.getIntValue("gender");
String genderCode = genderCodeInt == 1 ? "0" : (genderCodeInt == 0) ? "1" : genderCodeInt + ""; String genderCode = genderCodeInt == 1 ? "0" : (genderCodeInt == 0) ? "1" : genderCodeInt + "";
return AuthUserGender.getRealGender(genderCode); return AuthUserGender.getRealGender(genderCode);
@ -170,7 +171,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
* *
* @param object 接口返回的结果 * @param object 接口返回的结果
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("NSP_STATUS")) { if (object.containsKey("NSP_STATUS")) {
throw new AuthException(object.getString("error")); throw new AuthException(object.getString("error"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -47,7 +48,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
params.put("grant_type", "authorization_code"); params.put("grant_type", "authorization_code");
params.put("code", authCallback.getCode()); params.put("code", authCallback.getCode());
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -71,11 +72,11 @@ public class AuthJdRequest extends AuthDefaultRequest {
.queryParam("v", "2.0"); .queryParam("v", "2.0");
urlBuilder.queryParam("sign", GlobalAuthUtils.generateJdSignature(config.getClientSecret(), urlBuilder.getReadOnlyParams())); urlBuilder.queryParam("sign", GlobalAuthUtils.generateJdSignature(config.getClientSecret(), urlBuilder.getReadOnlyParams()));
String response = new HttpUtils(config.getHttpConfig()).post(urlBuilder.build(true)).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(urlBuilder.build(true)).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
JSONObject data = this.getUserDataJsonObject(object); Kv data = this.getUserDataJsonObject(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(data) .rawUserInfo(data)
@ -96,10 +97,10 @@ public class AuthJdRequest extends AuthDefaultRequest {
* @param object 请求返回结果 * @param object 请求返回结果
* @return data JSONObject * @return data JSONObject
*/ */
private JSONObject getUserDataJsonObject(JSONObject object) { private Kv getUserDataJsonObject(Kv object) {
return object.getJSONObject("jingdong_user_getUserInfoByOpenId_response") Kv userInfo = JsonUtil.parseKv(object.getString("jingdong_user_getUserInfoByOpenId_response"));
.getJSONObject("getuserinfobyappidandopenid_result") userInfo = JsonUtil.parseKv(userInfo.getString("getuserinfobyappidandopenid_result"));
.getJSONObject("data"); return JsonUtil.parseKv(userInfo.getString("data"));
} }
@Override @Override
@ -110,7 +111,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
params.put("grant_type", "refresh_token"); params.put("grant_type", "refresh_token");
params.put("refresh_token", oldToken.getRefreshToken()); params.put("refresh_token", oldToken.getRefreshToken());
String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), params, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), params, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -126,9 +127,9 @@ public class AuthJdRequest extends AuthDefaultRequest {
.build(); .build();
} }
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error_response")) { if (object.containsKey("error_response")) {
throw new AuthException(object.getJSONObject("error_response").getString("zh_desc")); throw new AuthException(JsonUtil.parseKv(object.getString("error_response")).getString("zh_desc"));
} }
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -53,8 +54,8 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
} }
private AuthToken getAuthToken(String response) { private AuthToken getAuthToken(String response) {
JSONObject accessTokenObject = checkResponse(response); Kv accessTokenObject = checkResponse(response);
JSONObject resultObject = accessTokenObject.getJSONObject("d"); Kv resultObject = JsonUtil.parseKv(accessTokenObject.getString("d"));
return AuthToken.builder() return AuthToken.builder()
.accessToken(resultObject.getString("accessToken")) .accessToken(resultObject.getString("accessToken"))
.refreshToken(resultObject.getString("refreshToken")) .refreshToken(resultObject.getString("refreshToken"))
@ -62,8 +63,8 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
.build(); .build();
} }
private JSONObject checkResponse(String response) { private Kv checkResponse(String response) {
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
if (!"0".equals(accessTokenObject.getString("c"))) { if (!"0".equals(accessTokenObject.getString("c"))) {
throw new AuthException(accessTokenObject.getString("m")); throw new AuthException(accessTokenObject.getString("m"));
} }
@ -77,11 +78,11 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
.queryParam("access_token", authToken.getAccessToken()) .queryParam("access_token", authToken.getAccessToken())
.queryParam("open_id", openId) .queryParam("open_id", openId)
.build()).getBody(); .build()).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
if (!"0".equals(object.getString("c"))) { if (!"0".equals(object.getString("c"))) {
throw new AuthException(object.getString("m")); throw new AuthException(object.getString("m"));
} }
JSONObject resultObject = object.getJSONObject("d"); Kv resultObject = JsonUtil.parseKv(object.getString("d"));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(resultObject) .rawUserInfo(resultObject)
@ -104,7 +105,7 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl("https://oauth.kujiale.com/oauth2/auth/user") String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl("https://oauth.kujiale.com/oauth2/auth/user")
.queryParam("access_token", authToken.getAccessToken()) .queryParam("access_token", authToken.getAccessToken())
.build()).getBody(); .build()).getBody();
JSONObject accessTokenObject = checkResponse(response); Kv accessTokenObject = checkResponse(response);
return accessTokenObject.getString("d"); return accessTokenObject.getString("d");
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -44,7 +45,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
params.put("client_id", config.getClientId()); params.put("client_id", config.getClientId());
params.put("client_secret", config.getClientSecret()); params.put("client_secret", config.getClientSecret());
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
.refreshToken(accessTokenObject.getString("refresh_token")) .refreshToken(accessTokenObject.getString("refresh_token"))
@ -60,7 +61,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
String userInfo = new HttpUtils(config.getHttpConfig()).get(source.userInfo(), null, new HttpHeader() String userInfo = new HttpUtils(config.getHttpConfig()).get(source.userInfo(), null, new HttpHeader()
.add("Content-Type", "application/x-www-form-urlencoded") .add("Content-Type", "application/x-www-form-urlencoded")
.add("Authorization", "Bearer ".concat(authToken.getAccessToken())), false).getBody(); .add("Authorization", "Bearer ".concat(authToken.getAccessToken())), false).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
.uuid(object.getString("userId")) .uuid(object.getString("userId"))
@ -81,7 +82,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
params.put("client_id", config.getClientId()); params.put("client_id", config.getClientId());
params.put("client_secret", config.getClientSecret()); params.put("client_secret", config.getClientSecret());
String userInfo = new HttpUtils(config.getHttpConfig()).post(source.revoke(), params, false).getBody(); String userInfo = new HttpUtils(config.getHttpConfig()).post(source.revoke(), params, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
// 返回1表示取消授权成功否则失败 // 返回1表示取消授权成功否则失败
AuthResponseStatus status = object.getBooleanValue("revoked") ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE; AuthResponseStatus status = object.getBooleanValue("revoked") ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE;
return AuthResponse.builder().code(status.getCode()).msg(status.getMsg()).build(); return AuthResponse.builder().code(status.getCode()).msg(status.getMsg()).build();
@ -95,7 +96,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
params.put("client_id", config.getClientId()); params.put("client_id", config.getClientId());
params.put("client_secret", config.getClientSecret()); params.put("client_secret", config.getClientSecret());
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
return AuthResponse.builder() return AuthResponse.builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()

View File

@ -1,8 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONArray; import com.xkcoding.json.JsonUtil;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.util.Kv;
import com.alibaba.fastjson.JSONPath;
import com.xkcoding.http.constants.Constants; import com.xkcoding.http.constants.Constants;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
@ -18,6 +17,9 @@ import me.zhyd.oauth.utils.AuthScopeUtils;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
import java.util.ArrayList;
import java.util.List;
/** /**
* 领英登录 * 领英登录
@ -49,7 +51,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
httpHeader.add("Authorization", "Bearer " + accessToken); httpHeader.add("Authorization", "Bearer " + accessToken);
String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false).getBody();
JSONObject userInfoObject = JSONObject.parseObject(response); Kv userInfoObject = JsonUtil.parseKv(response);
this.checkResponse(userInfoObject); this.checkResponse(userInfoObject);
@ -79,7 +81,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
* @param userInfoObject 用户json对象 * @param userInfoObject 用户json对象
* @return 用户名 * @return 用户名
*/ */
private String getUserName(JSONObject userInfoObject) { private String getUserName(Kv userInfoObject) {
String firstName, lastName; String firstName, lastName;
// 获取firstName // 获取firstName
if (userInfoObject.containsKey("localizedFirstName")) { if (userInfoObject.containsKey("localizedFirstName")) {
@ -102,28 +104,32 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
* @param userInfoObject 用户json对象 * @param userInfoObject 用户json对象
* @return 用户的头像地址 * @return 用户的头像地址
*/ */
private String getAvatar(JSONObject userInfoObject) { private String getAvatar(Kv userInfoObject) {
JSONObject profilePictureObject = userInfoObject.getJSONObject("profilePicture"); Kv profilePictureObject = userInfoObject.getKv("profilePicture");
if (null == profilePictureObject || !profilePictureObject.containsKey("displayImage~")) { if (null == profilePictureObject || !profilePictureObject.containsKey("displayImage~")) {
return null; return null;
} }
JSONObject displayImageObject = profilePictureObject.getJSONObject("displayImage~"); Kv displayImageObject = profilePictureObject.getKv("displayImage~");
if (null == displayImageObject || !displayImageObject.containsKey("elements")) { if (null == displayImageObject || !displayImageObject.containsKey("elements")) {
return null; return null;
} }
JSONArray displayImageElements = displayImageObject.getJSONArray("elements"); List<Kv> displayImageElements = displayImageObject.getListKv("elements");
if (null == displayImageElements || displayImageElements.isEmpty()) { if (null == displayImageElements || displayImageElements.isEmpty()) {
return null; return null;
} }
JSONObject largestImageObj = displayImageElements.getJSONObject(displayImageElements.size() - 1); Kv largestImageKv = displayImageElements.get(displayImageElements.size() - 1);
if (null == largestImageObj || !largestImageObj.containsKey("identifiers")) { if (null != largestImageKv) {
return null; if (!largestImageKv.containsKey("identifiers")) {
return null;
}
List<Kv> identifiers = largestImageKv.getListKv("identifiers");
if (null == identifiers || identifiers.isEmpty()) {
return null;
}
Kv identifierKv = identifiers.get(0);
return identifierKv.getString("identifier");
} }
JSONArray identifiers = largestImageObj.getJSONArray("identifiers"); return null;
if (null == identifiers || identifiers.isEmpty()) {
return null;
}
return identifiers.getJSONObject(0).getString("identifier");
} }
/** /**
@ -141,19 +147,26 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
String emailResponse = new HttpUtils(config.getHttpConfig()) String emailResponse = new HttpUtils(config.getHttpConfig())
.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", null, httpHeader, false) .get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", null, httpHeader, false)
.getBody(); .getBody();
JSONObject emailObj = JSONObject.parseObject(emailResponse); Kv emailObj = JsonUtil.parseKv(emailResponse);
this.checkResponse(emailObj); this.checkResponse(emailObj);
ArrayList<Object> elements = emailObj.getArrayList("elements");
Object obj = JSONPath.eval(emailObj, "$['elements'][0]['handle~']['emailAddress']"); for (Object element : elements) {
return null == obj ? null : (String) obj; Kv item = JsonUtil.parseKv(JsonUtil.toJsonString(element));
String type = item.getString("type");
if ("EMAIL".equalsIgnoreCase(type)) {
item = JsonUtil.parseKv(item.getString("handle~"));
return item.getString("emailAddress");
}
}
return null;
} }
private String getUserName(JSONObject userInfoObject, String nameKey) { private String getUserName(Kv userInfoObject, String nameKey) {
String firstName; String firstName;
JSONObject firstNameObj = userInfoObject.getJSONObject(nameKey); Kv firstNameObj = JsonUtil.parseKv(userInfoObject.getString(nameKey));
JSONObject localizedObj = firstNameObj.getJSONObject("localized"); Kv localizedObj = JsonUtil.parseKv(firstNameObj.getString("localized"));
JSONObject preferredLocaleObj = firstNameObj.getJSONObject("preferredLocale"); Kv preferredLocaleObj = JsonUtil.parseKv(firstNameObj.getString("preferredLocale"));
firstName = localizedObj.getString(preferredLocaleObj.getString("language") + "_" + preferredLocaleObj.getString("country")); firstName = localizedObj.getString(preferredLocaleObj.getString("language") + "_" + preferredLocaleObj.getString("country"));
return firstName; return firstName;
} }
@ -163,7 +176,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"), source); throw new AuthException(object.getString("error_description"), source);
} }
@ -181,7 +194,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded"); httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded");
String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, null, httpHeader).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, null, httpHeader).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -42,7 +43,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
form.put("grant_type", "authorization_code"); form.put("grant_type", "authorization_code");
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -61,7 +62,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
form.put("access_token", authToken.getAccessToken()); form.put("access_token", authToken.getAccessToken());
String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), form, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -86,7 +87,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
form.put("grant_type", "refresh_token"); form.put("grant_type", "refresh_token");
String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -100,7 +101,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
.build(); .build();
} }
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error_code")) { if (object.containsKey("error_code")) {
throw new AuthException(object.getString("erroe_msg")); throw new AuthException(object.getString("erroe_msg"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.constants.Constants; import com.xkcoding.http.constants.Constants;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -45,7 +46,7 @@ public class AuthMiRequest extends AuthDefaultRequest {
private AuthToken getToken(String accessTokenUrl) { private AuthToken getToken(String accessTokenUrl) {
String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl).getBody();
String jsonStr = response.replace(PREFIX, Constants.EMPTY); String jsonStr = response.replace(PREFIX, Constants.EMPTY);
JSONObject accessTokenObject = JSONObject.parseObject(jsonStr); Kv accessTokenObject = JsonUtil.parseKv(jsonStr);
if (accessTokenObject.containsKey("error")) { if (accessTokenObject.containsKey("error")) {
throw new AuthException(accessTokenObject.getString("error_description")); throw new AuthException(accessTokenObject.getString("error_description"));
@ -68,12 +69,12 @@ public class AuthMiRequest extends AuthDefaultRequest {
// 获取用户信息 // 获取用户信息
String userResponse = doGetUserInfo(authToken); String userResponse = doGetUserInfo(authToken);
JSONObject userProfile = JSONObject.parseObject(userResponse); Kv userProfile = JsonUtil.parseKv(userResponse);
if ("error".equalsIgnoreCase(userProfile.getString("result"))) { if ("error".equalsIgnoreCase(userProfile.getString("result"))) {
throw new AuthException(userProfile.getString("description")); throw new AuthException(userProfile.getString("description"));
} }
JSONObject object = userProfile.getJSONObject("data"); Kv object = userProfile.getKv("data");
AuthUser authUser = AuthUser.builder() AuthUser authUser = AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -92,9 +93,9 @@ public class AuthMiRequest extends AuthDefaultRequest {
.getClientId(), authToken.getAccessToken()); .getClientId(), authToken.getAccessToken());
String emailResponse = new HttpUtils(config.getHttpConfig()).get(emailPhoneUrl).getBody(); String emailResponse = new HttpUtils(config.getHttpConfig()).get(emailPhoneUrl).getBody();
JSONObject userEmailPhone = JSONObject.parseObject(emailResponse); Kv userEmailPhone = JsonUtil.parseKv(emailResponse);
if (!"error".equalsIgnoreCase(userEmailPhone.getString("result"))) { if (!"error".equalsIgnoreCase(userEmailPhone.getString("result"))) {
JSONObject emailPhone = userEmailPhone.getJSONObject("data"); Kv emailPhone = userEmailPhone.getKv("data");
authUser.setEmail(emailPhone.getString("email")); authUser.setEmail(emailPhone.getString("email"));
} else { } else {
Log.warn("小米开发平台暂时不对外开放用户手机及邮箱信息的获取"); Log.warn("小米开发平台暂时不对外开放用户手机及邮箱信息的获取");

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -51,7 +52,7 @@ public class AuthOktaRequest extends AuthDefaultRequest {
.add("content-type", "application/x-www-form-urlencoded") .add("content-type", "application/x-www-form-urlencoded")
.add("Authorization", "Basic " + Base64Utils.encode(config.getClientId().concat(":").concat(config.getClientSecret()))); .add("Authorization", "Basic " + Base64Utils.encode(config.getClientId().concat(":").concat(config.getClientSecret())));
String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl, null, header, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl, null, header, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -83,9 +84,9 @@ public class AuthOktaRequest extends AuthDefaultRequest {
HttpHeader header = new HttpHeader() HttpHeader header = new HttpHeader()
.add("Authorization", "Bearer " + authToken.getAccessToken()); .add("Authorization", "Bearer " + authToken.getAccessToken());
String response = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), null, header, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), null, header, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
JSONObject address = object.getJSONObject("address"); Kv address = object.getKv("address");
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
.uuid(object.getString("sub")) .uuid(object.getString("sub"))
@ -112,7 +113,7 @@ public class AuthOktaRequest extends AuthDefaultRequest {
return AuthResponse.builder().code(status.getCode()).msg(status.getMsg()).build(); return AuthResponse.builder().code(status.getCode()).msg(status.getMsg()).build();
} }
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -30,7 +31,7 @@ public class AuthOschinaRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -43,7 +44,7 @@ public class AuthOschinaRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -97,7 +98,7 @@ public class AuthOschinaRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.enums.AuthUserGender; import me.zhyd.oauth.enums.AuthUserGender;
@ -38,7 +39,7 @@ public class AuthPinterestRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -51,9 +52,9 @@ public class AuthPinterestRequest extends AuthDefaultRequest {
String userinfoUrl = userInfoUrl(authToken); String userinfoUrl = userInfoUrl(authToken);
// TODO: 是否需要 .setFollowRedirects(true) // TODO: 是否需要 .setFollowRedirects(true)
String response = new HttpUtils(config.getHttpConfig()).get(userinfoUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(userinfoUrl).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
JSONObject userObj = object.getJSONObject("data"); Kv userObj = object.getKv("data");
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(userObj) .rawUserInfo(userObj)
.uuid(userObj.getString("id")) .uuid(userObj.getString("id"))
@ -67,13 +68,13 @@ public class AuthPinterestRequest extends AuthDefaultRequest {
.build(); .build();
} }
private String getAvatarUrl(JSONObject userObj) { private String getAvatarUrl(Kv userObj) {
// image is a map data structure // image is a map data structure
JSONObject jsonObject = userObj.getJSONObject("image"); Kv kv = userObj.getKv("image");
if (Objects.isNull(jsonObject)) { if (Objects.isNull(kv)) {
return null; return null;
} }
return jsonObject.getJSONObject("60x60").getString("url"); return kv.getKv("60x60").getString("url");
} }
/** /**
@ -109,7 +110,7 @@ public class AuthPinterestRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (!object.containsKey("status") && FAILURE.equals(object.getString("status"))) { if (!object.containsKey("status") && FAILURE.equals(object.getString("status"))) {
throw new AuthException(object.getString("message")); throw new AuthException(object.getString("message"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -42,7 +43,7 @@ public class AuthProginnRequest extends AuthDefaultRequest {
params.put("grant_type", "authorization_code"); params.put("grant_type", "authorization_code");
params.put("redirect_uri", config.getRedirectUri()); params.put("redirect_uri", config.getRedirectUri());
String response = new HttpUtils(config.getHttpConfig()).post(AuthDefaultSource.PROGINN.accessToken(), params, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(AuthDefaultSource.PROGINN.accessToken(), params, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
@ -56,7 +57,7 @@ public class AuthProginnRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken); String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(object) .rawUserInfo(object)
@ -76,7 +77,7 @@ public class AuthProginnRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -48,7 +49,7 @@ public class AuthQqRequest extends AuthDefaultRequest {
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String openId = this.getOpenId(authToken); String openId = this.getOpenId(authToken);
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
if (object.getIntValue("ret") != 0) { if (object.getIntValue("ret") != 0) {
throw new AuthException(object.getString("msg")); throw new AuthException(object.getString("msg"));
} }
@ -86,7 +87,7 @@ public class AuthQqRequest extends AuthDefaultRequest {
String removePrefix = response.replace("callback(", ""); String removePrefix = response.replace("callback(", "");
String removeSuffix = removePrefix.replace(");", ""); String removeSuffix = removePrefix.replace(");", "");
String openId = removeSuffix.trim(); String openId = removeSuffix.trim();
JSONObject object = JSONObject.parseObject(openId); Kv object = JsonUtil.parseKv(openId);
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.get("error") + ":" + object.get("error_description")); throw new AuthException(object.get("error") + ":" + object.get("error_description"));
} }

View File

@ -1,7 +1,8 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.util.UrlUtil; import com.xkcoding.http.util.UrlUtil;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -16,6 +17,7 @@ import me.zhyd.oauth.utils.AuthScopeUtils;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import static me.zhyd.oauth.config.AuthDefaultSource.RENREN; import static me.zhyd.oauth.config.AuthDefaultSource.RENREN;
@ -45,7 +47,7 @@ public class AuthRenrenRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject userObj = JSONObject.parseObject(response).getJSONObject("response"); Kv userObj = JsonUtil.parseKv(response).getKv("response");
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(userObj) .rawUserInfo(userObj)
@ -69,42 +71,42 @@ public class AuthRenrenRequest extends AuthDefaultRequest {
private AuthToken getToken(String url) { private AuthToken getToken(String url) {
String response = new HttpUtils(config.getHttpConfig()).post(url).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(url).getBody();
JSONObject jsonObject = JSONObject.parseObject(response); Kv kv = JsonUtil.parseKv(response);
if (jsonObject.containsKey("error")) { if (kv.containsKey("error")) {
throw new AuthException("Failed to get token from Renren: " + jsonObject); throw new AuthException("Failed to get token from Renren: " + kv);
} }
return AuthToken.builder() return AuthToken.builder()
.tokenType(jsonObject.getString("token_type")) .tokenType(kv.getString("token_type"))
.expireIn(jsonObject.getIntValue("expires_in")) .expireIn(kv.getIntValue("expires_in"))
.accessToken(UrlUtil.urlEncode(jsonObject.getString("access_token"))) .accessToken(UrlUtil.urlEncode(kv.getString("access_token")))
.refreshToken(UrlUtil.urlEncode(jsonObject.getString("refresh_token"))) .refreshToken(UrlUtil.urlEncode(kv.getString("refresh_token")))
.openId(jsonObject.getJSONObject("user").getString("id")) .openId(kv.getKv("user").getString("id"))
.build(); .build();
} }
private String getAvatarUrl(JSONObject userObj) { private String getAvatarUrl(Kv userObj) {
JSONArray jsonArray = userObj.getJSONArray("avatar"); List<Kv> kvs = userObj.getListKv("avatar");
if (Objects.isNull(jsonArray) || jsonArray.isEmpty()) { if (Objects.isNull(kvs) || kvs.isEmpty()) {
return null; return null;
} }
return jsonArray.getJSONObject(0).getString("url"); return kvs.get(0).getString("url");
} }
private AuthUserGender getGender(JSONObject userObj) { private AuthUserGender getGender(Kv userObj) {
JSONObject basicInformation = userObj.getJSONObject("basicInformation"); Kv basicInformation = userObj.getKv("basicInformation");
if (Objects.isNull(basicInformation)) { if (Objects.isNull(basicInformation)) {
return AuthUserGender.UNKNOWN; return AuthUserGender.UNKNOWN;
} }
return AuthUserGender.getRealGender(basicInformation.getString("sex")); return AuthUserGender.getRealGender(basicInformation.getString("sex"));
} }
private String getCompany(JSONObject userObj) { private String getCompany(Kv userObj) {
JSONArray jsonArray = userObj.getJSONArray("work"); List<Kv> kvs = userObj.getListKv("work");
if (Objects.isNull(jsonArray) || jsonArray.isEmpty()) { if (Objects.isNull(kvs) || kvs.isEmpty()) {
return null; return null;
} }
return jsonArray.getJSONObject(0).getString("name"); return kvs.get(0).getString("name");
} }
/** /**

View File

@ -1,7 +1,8 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -18,6 +19,8 @@ import me.zhyd.oauth.utils.AuthScopeUtils;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
import java.util.List;
/** /**
* slack登录, slack.com * slack登录, slack.com
* *
@ -40,13 +43,13 @@ public class AuthSlackRequest extends AuthDefaultRequest {
.add("Content-Type", "application/x-www-form-urlencoded"); .add("Content-Type", "application/x-www-form-urlencoded");
String response = new HttpUtils(config.getHttpConfig()) String response = new HttpUtils(config.getHttpConfig())
.get(accessTokenUrl(authCallback.getCode()), null, header, false).getBody(); .get(accessTokenUrl(authCallback.getCode()), null, header, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))
.scope(accessTokenObject.getString("scope")) .scope(accessTokenObject.getString("scope"))
.tokenType(accessTokenObject.getString("token_type")) .tokenType(accessTokenObject.getString("token_type"))
.uid(accessTokenObject.getJSONObject("authed_user").getString("id")) .uid(accessTokenObject.getKv("authed_user").getString("id"))
.build(); .build();
} }
@ -57,10 +60,10 @@ public class AuthSlackRequest extends AuthDefaultRequest {
.add("Authorization", "Bearer ".concat(authToken.getAccessToken())); .add("Authorization", "Bearer ".concat(authToken.getAccessToken()));
String userInfo = new HttpUtils(config.getHttpConfig()) String userInfo = new HttpUtils(config.getHttpConfig())
.get(userInfoUrl(authToken), null, header, false).getBody(); .get(userInfoUrl(authToken), null, header, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
JSONObject user = object.getJSONObject("user"); Kv user = object.getKv("user");
JSONObject profile = user.getJSONObject("profile"); Kv profile = user.getKv("profile");
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(user) .rawUserInfo(user)
.uuid(user.getString("id")) .uuid(user.getString("id"))
@ -81,7 +84,7 @@ public class AuthSlackRequest extends AuthDefaultRequest {
.add("Authorization", "Bearer ".concat(authToken.getAccessToken())); .add("Authorization", "Bearer ".concat(authToken.getAccessToken()));
String userInfo = new HttpUtils(config.getHttpConfig()) String userInfo = new HttpUtils(config.getHttpConfig())
.get(source.revoke(), null, header, false).getBody(); .get(source.revoke(), null, header, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object); this.checkResponse(object);
// 返回1表示取消授权成功否则失败 // 返回1表示取消授权成功否则失败
AuthResponseStatus status = object.getBooleanValue("revoked") ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE; AuthResponseStatus status = object.getBooleanValue("revoked") ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE;
@ -93,13 +96,13 @@ public class AuthSlackRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (!object.getBooleanValue("ok")) { if (!object.getBooleanValue("ok")) {
String errorMsg = object.getString("error"); String errorMsg = object.getString("error");
if (object.containsKey("response_metadata")) { if (object.containsKey("response_metadata")) {
JSONArray array = object.getJSONObject("response_metadata").getJSONArray("messages"); List<String> kvs = object.getKv("response_metadata").getArrayList("messages");
if (null != array && array.size() > 0) { if (null != kvs && kvs.size() > 0) {
errorMsg += "; " + String.join(",", array.toArray(new String[0])); errorMsg += "; " + String.join(",", kvs.toArray(new String[0]));
} }
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.constants.Constants; import com.xkcoding.http.constants.Constants;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import com.xkcoding.http.util.MapUtil; import com.xkcoding.http.util.MapUtil;
@ -44,7 +45,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest {
httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded"); httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded");
String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, form, httpHeader, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, form, httpHeader, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
@ -61,9 +62,9 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest {
.queryParam("key", this.config.getStackOverflowKey()) .queryParam("key", this.config.getStackOverflowKey())
.build(); .build();
String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
JSONObject userObj = object.getJSONArray("items").getJSONObject(0); Kv userObj = object.getListKv("items").get(0);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(userObj) .rawUserInfo(userObj)
@ -97,7 +98,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -37,7 +38,7 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
return AuthToken.builder().accessCode(authCallback.getCode()).build(); return AuthToken.builder().accessCode(authCallback.getCode()).build();
} }
private AuthToken getAuthToken(JSONObject object) { private AuthToken getAuthToken(Kv object) {
this.checkResponse(object); this.checkResponse(object);
return AuthToken.builder() return AuthToken.builder()
@ -51,7 +52,7 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
.build(); .build();
} }
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description")); throw new AuthException(object.getString("error_description"));
} }
@ -60,7 +61,7 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doPostAuthorizationCode(authToken.getAccessCode()); String response = doPostAuthorizationCode(authToken.getAccessCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
if (accessTokenObject.containsKey("error")) { if (accessTokenObject.containsKey("error")) {
throw new AuthException(accessTokenObject.getString("error_description")); throw new AuthException(accessTokenObject.getString("error_description"));
} }
@ -82,7 +83,7 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse refresh(AuthToken oldToken) {
String tokenUrl = refreshTokenUrl(oldToken.getRefreshToken()); String tokenUrl = refreshTokenUrl(oldToken.getRefreshToken());
String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
return AuthResponse.builder() return AuthResponse.builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getAuthToken(accessTokenObject)) .data(this.getAuthToken(accessTokenObject))

View File

@ -1,6 +1,6 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
@ -46,7 +46,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
form.put("grant_type", "code"); form.put("grant_type", "code");
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
@ -65,7 +65,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
String response = new HttpUtils(config.getHttpConfig()) String response = new HttpUtils(config.getHttpConfig())
.get(source.userInfo(), null, httpHeader, false).getBody(); .get(source.userInfo(), null, httpHeader, false).getBody();
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -95,7 +95,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
form.put("_userId", uid); form.put("_userId", uid);
form.put("refresh_token", refreshToken); form.put("refresh_token", refreshToken);
String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false).getBody();
JSONObject refreshTokenObject = JSONObject.parseObject(response); Kv refreshTokenObject = JsonUtil.parseKv(response);
this.checkResponse(refreshTokenObject); this.checkResponse(refreshTokenObject);
@ -113,7 +113,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if ((object.containsKey("message") && object.containsKey("name"))) { if ((object.containsKey("message") && object.containsKey("name"))) {
throw new AuthException(object.getString("name") + ", " + object.getString("message")); throw new AuthException(object.getString("name") + ", " + object.getString("message"));
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -31,7 +32,7 @@ public class AuthToutiaoRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doGetAuthorizationCode(authCallback.getCode()); String response = doGetAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
@ -46,11 +47,11 @@ public class AuthToutiaoRequest extends AuthDefaultRequest {
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String userResponse = doGetUserInfo(authToken); String userResponse = doGetUserInfo(authToken);
JSONObject userProfile = JSONObject.parseObject(userResponse); Kv userProfile = JsonUtil.parseKv(userResponse);
this.checkResponse(userProfile); this.checkResponse(userProfile);
JSONObject user = userProfile.getJSONObject("data"); Kv user = userProfile.getKv("data");
boolean isAnonymousUser = user.getIntValue("uid_type") == 14; boolean isAnonymousUser = user.getIntValue("uid_type") == 14;
String anonymousUserName = "匿名用户"; String anonymousUserName = "匿名用户";
@ -122,7 +123,7 @@ public class AuthToutiaoRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("error_code")) { if (object.containsKey("error_code")) {
throw new AuthException(AuthToutiaoErrorCode.getErrorCode(object.getIntValue("error_code")).getDesc()); throw new AuthException(AuthToutiaoErrorCode.getErrorCode(object.getIntValue("error_code")).getDesc());
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.constants.Constants; import com.xkcoding.http.constants.Constants;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import com.xkcoding.http.util.MapUtil; import com.xkcoding.http.util.MapUtil;
@ -134,7 +135,7 @@ public class AuthTwitterRequest extends AuthDefaultRequest {
httpHeader.add("Authorization", header); httpHeader.add("Authorization", header);
String response = new HttpUtils(config.getHttpConfig()) String response = new HttpUtils(config.getHttpConfig())
.get(userInfoUrl(authToken), null, httpHeader, false).getBody(); .get(userInfoUrl(authToken), null, httpHeader, false).getBody();
JSONObject userInfo = JSONObject.parseObject(response); Kv userInfo = JsonUtil.parseKv(response);
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(userInfo) .rawUserInfo(userInfo)

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -59,7 +60,7 @@ public class AuthWeChatEnterpriseThirdQrcodeRequest extends AbstractAuthWeChatEn
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
try { try {
String response = doGetAuthorizationCode(accessTokenUrl()); String response = doGetAuthorizationCode(accessTokenUrl());
JSONObject object = this.checkResponse(response); Kv object = this.checkResponse(response);
AuthToken authToken = AuthToken.builder() AuthToken authToken = AuthToken.builder()
.accessToken(object.getString("provider_access_token")) .accessToken(object.getString("provider_access_token"))
.expireIn(object.getIntValue("expires_in")) .expireIn(object.getIntValue("expires_in"))
@ -72,10 +73,10 @@ public class AuthWeChatEnterpriseThirdQrcodeRequest extends AbstractAuthWeChatEn
@Override @Override
protected String doGetAuthorizationCode(String code) { protected String doGetAuthorizationCode(String code) {
JSONObject data = new JSONObject(); Kv data = new Kv();
data.put("corpid", config.getClientId()); data.put("corpid", config.getClientId());
data.put("provider_secret", config.getClientSecret()); data.put("provider_secret", config.getClientSecret());
return new HttpUtils(config.getHttpConfig()).post(accessTokenUrl(code), data.toJSONString()).getBody(); return new HttpUtils(config.getHttpConfig()).post(accessTokenUrl(code), JsonUtil.toJsonString(data)).getBody();
} }
/** /**
@ -90,7 +91,7 @@ public class AuthWeChatEnterpriseThirdQrcodeRequest extends AbstractAuthWeChatEn
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
JSONObject response = this.checkResponse(doGetUserInfo(authToken)); Kv response = this.checkResponse(doGetUserInfo(authToken));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(response) .rawUserInfo(response)
.build(); .build();
@ -98,10 +99,10 @@ public class AuthWeChatEnterpriseThirdQrcodeRequest extends AbstractAuthWeChatEn
@Override @Override
protected String doGetUserInfo(AuthToken authToken) { protected String doGetUserInfo(AuthToken authToken) {
JSONObject data = new JSONObject(); Kv data = new Kv();
data.put("auth_code", authToken.getCode()); data.put("auth_code", authToken.getCode());
return new HttpUtils(config.getHttpConfig()) return new HttpUtils(config.getHttpConfig())
.post(userInfoUrl(authToken), data.toJSONString()).getBody(); .post(userInfoUrl(authToken), JsonUtil.toJsonString(data)).getBody();
} }
@Override @Override
@ -111,8 +112,8 @@ public class AuthWeChatEnterpriseThirdQrcodeRequest extends AbstractAuthWeChatEn
build(); build();
} }
private JSONObject checkResponse(String response) { private Kv checkResponse(String response) {
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
if (object.containsKey("errcode") && object.getIntValue("errcode") != 0) { if (object.containsKey("errcode") && object.getIntValue("errcode") != 0) {
throw new AuthException(object.getString("errmsg"), source); throw new AuthException(object.getString("errmsg"), source);
} }

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
@ -48,7 +49,7 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest {
String openId = authToken.getOpenId(); String openId = authToken.getOpenId();
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -85,7 +86,7 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("errcode")) { if (object.containsKey("errcode")) {
throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg")); throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg"));
} }
@ -99,7 +100,7 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest {
*/ */
private AuthToken getToken(String accessTokenUrl) { private AuthToken getToken(String accessTokenUrl) {
String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -45,7 +46,7 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest {
String openId = authToken.getOpenId(); String openId = authToken.getOpenId();
String response = doGetUserInfo(authToken); String response = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
this.checkResponse(object); this.checkResponse(object);
@ -81,7 +82,7 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest {
* *
* @param object 请求响应内容 * @param object 请求响应内容
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("errcode")) { if (object.containsKey("errcode")) {
throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg")); throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg"));
} }
@ -95,7 +96,7 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest {
*/ */
private AuthToken getToken(String accessTokenUrl) { private AuthToken getToken(String accessTokenUrl) {
String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -35,7 +36,7 @@ public class AuthWeiboRequest extends AuthDefaultRequest {
@Override @Override
protected AuthToken getAccessToken(AuthCallback authCallback) { protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode()); String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
if (accessTokenObject.containsKey("error")) { if (accessTokenObject.containsKey("error")) {
throw new AuthException(accessTokenObject.getString("error_description")); throw new AuthException(accessTokenObject.getString("error_description"));
} }
@ -58,7 +59,7 @@ public class AuthWeiboRequest extends AuthDefaultRequest {
httpHeader.add("API-RemoteIP", IpUtils.getLocalIp()); httpHeader.add("API-RemoteIP", IpUtils.getLocalIp());
String userInfo = new HttpUtils(config.getHttpConfig()) String userInfo = new HttpUtils(config.getHttpConfig())
.get(userInfoUrl(authToken), null, httpHeader, false).getBody(); .get(userInfoUrl(authToken), null, httpHeader, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo); Kv object = JsonUtil.parseKv(userInfo);
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(object.getString("error")); throw new AuthException(object.getString("error"));
} }
@ -102,7 +103,7 @@ public class AuthWeiboRequest extends AuthDefaultRequest {
@Override @Override
public AuthResponse revoke(AuthToken authToken) { public AuthResponse revoke(AuthToken authToken) {
String response = doGetRevoke(authToken); String response = doGetRevoke(authToken);
JSONObject object = JSONObject.parseObject(response); Kv object = JsonUtil.parseKv(response);
if (object.containsKey("error")) { if (object.containsKey("error")) {
return AuthResponse.builder() return AuthResponse.builder()
.code(AuthResponseStatus.FAILURE.getCode()) .code(AuthResponseStatus.FAILURE.getCode())

View File

@ -1,6 +1,7 @@
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.HttpUtil; import com.xkcoding.http.HttpUtil;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
@ -51,7 +52,7 @@ public class AuthXmlyRequest extends AuthDefaultRequest {
map.put("grant_type", "authorization_code"); map.put("grant_type", "authorization_code");
map.put("redirect_uri", config.getRedirectUri()); map.put("redirect_uri", config.getRedirectUri());
String response = HttpUtil.post(source.accessToken(), map, true).getBody(); String response = HttpUtil.post(source.accessToken(), map, true).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject); this.checkResponse(accessTokenObject);
return AuthToken.builder() return AuthToken.builder()
@ -98,7 +99,7 @@ public class AuthXmlyRequest extends AuthDefaultRequest {
map.put("access_token", authToken.getAccessToken()); map.put("access_token", authToken.getAccessToken());
map.put("sig", GlobalAuthUtils.generateXmlySignature(map, config.getClientSecret())); map.put("sig", GlobalAuthUtils.generateXmlySignature(map, config.getClientSecret()));
String rawUserInfo = HttpUtil.get(source.userInfo(), map, false).getBody(); String rawUserInfo = HttpUtil.get(source.userInfo(), map, false).getBody();
JSONObject object = JSONObject.parseObject(rawUserInfo); Kv object = JsonUtil.parseKv(rawUserInfo);
checkResponse(object); checkResponse(object);
return AuthUser.builder() return AuthUser.builder()
.uuid(object.getString("id")) .uuid(object.getString("id"))
@ -116,7 +117,7 @@ public class AuthXmlyRequest extends AuthDefaultRequest {
* *
* @param object 接口返回的结果 * @param object 接口返回的结果
*/ */
private void checkResponse(JSONObject object) { private void checkResponse(Kv object) {
if (object.containsKey("errcode")) { if (object.containsKey("errcode")) {
throw new AuthException(object.getIntValue("error_no"), object.getString("error_desc")); throw new AuthException(object.getIntValue("error_no"), object.getString("error_desc"));
} }

View File

@ -1,7 +1,7 @@
package me.zhyd.oauth.utils; package me.zhyd.oauth.utils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.xkcoding.json.util.Kv;
import com.alibaba.fastjson.JSONPath; import com.alibaba.fastjson.JSONPath;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -31,7 +31,7 @@ public class JsonPathTest {
Map<String, Object> master = new HashMap<>(); Map<String, Object> master = new HashMap<>();
master.put("elements", list); master.put("elements", list);
JSONObject emailObj = JSONObject.parseObject(JSON.toJSONString(master)); Kv emailObj = JsonUtil.parseKv(JSON.toJSONString(master));
Object object = JSONPath.eval(emailObj, "$['elements'][0]['handle~']['emailAddress']"); Object object = JSONPath.eval(emailObj, "$['elements'][0]['handle~']['emailAddress']");
Assert.assertEquals("xxxx", object); Assert.assertEquals("xxxx", object);
} }