⬆️ 升级 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>
<artifactId>JustAuth</artifactId>
<version>1.16.5</version>
<version>1.16.6</version>
<name>JustAuth</name>
<url>https://gitee.com/yadong.zhang/JustAuth</url>
@ -58,9 +58,9 @@
<maven-gpg-version>1.6</maven-gpg-version>
<maven.test.skip>false</maven.test.skip>
<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>
<junit-version>4.13.2</junit-version>
<fastjson-version>1.2.83</fastjson-version>
<alipay-sdk-version>4.17.5.ALL</alipay-sdk-version>
<jacoco-version>0.8.2</jacoco-version>
</properties>
@ -77,17 +77,17 @@
<artifactId>simple-http</artifactId>
<version>${simple-http.version}</version>
</dependency>
<dependency>
<groupId>com.xkcoding.json</groupId>
<artifactId>simple-json</artifactId>
<version>${simple-json.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>

View File

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

View File

@ -1,8 +1,9 @@
package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.http.support.HttpHeader;
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
@ -54,7 +55,7 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
Map<String, String> form = MapUtil.parseStringToMap(accessTokenUrl, false);
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);
@ -72,7 +73,7 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"));
}
@ -88,7 +89,7 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
httpHeader.add("Authorization", jwt);
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);
return AuthUser.builder()
.rawUserInfo(object)

View File

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

View File

@ -1,6 +1,5 @@
package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
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.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse;
import com.xkcoding.json.JsonUtil;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
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);
return AuthUser.builder()
.rawUserInfo(JSONObject.parseObject(JSONObject.toJSONString(response)))
.rawUserInfo(JsonUtil.parseKv(JsonUtil.toJsonString(response)))
.uuid(response.getUserId())
.username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName())
.nickname(response.getNickName())

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -28,7 +29,7 @@ public class AuthAliyunRequest extends AuthDefaultRequest {
@Override
protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response);
Kv accessTokenObject = JsonUtil.parseKv(response);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))
.expireIn(accessTokenObject.getIntValue("expires_in"))
@ -41,7 +42,7 @@ public class AuthAliyunRequest extends AuthDefaultRequest {
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("sub"))

View File

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

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -50,7 +51,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
@ -65,7 +66,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
.build();
}
private String getAvatar(JSONObject object) {
private String getAvatar(Kv object) {
String protrait = object.getString("portrait");
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
public AuthResponse revoke(AuthToken authToken) {
String response = doGetRevoke(authToken);
JSONObject object = JSONObject.parseObject(response);
Kv object = JsonUtil.parseKv(response);
this.checkResponse(object);
// 返回1表示取消授权成功否则失败
AuthResponseStatus status = object.getIntValue("result") == 1 ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE;
@ -115,7 +116,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error") || object.containsKey("error_code")) {
String msg = object.containsKey("error_description") ? object.getString("error_description") : object.getString("error_msg");
throw new AuthException(msg);
@ -123,7 +124,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
}
private AuthToken getAuthToken(String response) {
JSONObject accessTokenObject = JSONObject.parseObject(response);
Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))

View File

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

View File

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

View File

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

View File

@ -1,6 +1,7 @@
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 com.xkcoding.http.constants.Constants;
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);
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);
@ -91,19 +92,19 @@ public class AuthElemeRequest extends AuthDefaultRequest {
paramsMap.put("signature", signature);
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")) {
throw new AuthException(object.getString("message"));
}
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()
.rawUserInfo(result)
@ -125,7 +126,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true);
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);
@ -169,7 +170,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
return (UuidUtils.getUUID() + "|" + System.currentTimeMillis()).toUpperCase();
}
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"));
}

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -32,7 +33,7 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
@Override
protected AuthToken getAccessToken(AuthCallback authCallback) {
String response = doPostAuthorizationCode(authCallback.getCode());
JSONObject accessTokenObject = JSONObject.parseObject(response);
Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))
@ -44,7 +45,7 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
@ -61,11 +62,11 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
.build();
}
private String getUserPicture(JSONObject object) {
private String getUserPicture(Kv object) {
String picture = null;
if (object.containsKey("picture")) {
JSONObject pictureObj = object.getJSONObject("picture");
pictureObj = pictureObj.getJSONObject("data");
Kv pictureObj = JsonUtil.parseKv(object.getString("picture"));
pictureObj = JsonUtil.parseKv(object.getString("data"));
if (null != pictureObj) {
picture = pictureObj.getString("url");
}
@ -92,9 +93,9 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
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;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.json.JsonUtil;
import com.xkcoding.json.util.Kv;
import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
@ -52,22 +52,22 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
return cacheAppAccessToken;
}
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_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();
JSONObject jsonObject = JSON.parseObject(response);
this.checkResponse(jsonObject);
String appAccessToken = jsonObject.getString("app_access_token");
Kv kv = JsonUtil.parseKv(response);
this.checkResponse(kv);
String appAccessToken = kv.getString("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;
}
@Override
protected AuthToken getAccessToken(AuthCallback authCallback) {
JSONObject requestObject = new JSONObject();
Kv requestObject = new Kv();
requestObject.put("app_access_token", this.getAppAccessToken());
requestObject.put("grant_type", "authorization_code");
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()
.add("Content-Type", "application/json")
.add("Authorization", "Bearer " + accessToken), false).getBody();
JSONObject object = JSON.parseObject(response);
Kv object = JsonUtil.parseKv(response);
this.checkResponse(object);
JSONObject data = object.getJSONObject("data");
Kv data = JsonUtil.parseKv(object.getString("data"));
return AuthUser.builder()
.rawUserInfo(object)
.uuid(data.getString("union_id"))
@ -99,7 +99,7 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
@Override
public AuthResponse refresh(AuthToken authToken) {
JSONObject requestObject = new JSONObject();
Kv requestObject = new Kv();
requestObject.put("app_access_token", this.getAppAccessToken());
requestObject.put("grant_type", "refresh_token");
requestObject.put("refresh_token", authToken.getRefreshToken());
@ -110,12 +110,12 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
}
private AuthToken getToken(JSONObject param, String url) {
String response = new HttpUtils(config.getHttpConfig()).post(url, param.toJSONString(), new HttpHeader()
private AuthToken getToken(Kv param, String url) {
String response = new HttpUtils(config.getHttpConfig()).post(url, JsonUtil.toJsonString(param), new HttpHeader()
.add("Content-Type", "application/json")).getBody();
JSONObject jsonObject = JSON.parseObject(response);
this.checkResponse(jsonObject);
JSONObject data = jsonObject.getJSONObject("data");
Kv kv = JsonUtil.parseKv(response);
this.checkResponse(kv);
Kv data = JsonUtil.parseKv(kv.getString("data"));
return AuthToken.builder()
.accessToken(data.getString("access_token"))
.refreshToken(data.getString("refresh_token"))
@ -138,11 +138,11 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
/**
* 校验响应内容是否正确
*
* @param jsonObject 响应内容
* @param kv 响应内容
*/
private void checkResponse(JSONObject jsonObject) {
if (jsonObject.getIntValue("code") != 0) {
throw new AuthException(jsonObject.getString("message"));
private void checkResponse(Kv kv) {
if (kv.getIntValue("code") != 0) {
throw new AuthException(kv.getString("message"));
}
}

View File

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

View File

@ -1,6 +1,7 @@
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 me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
@ -53,7 +54,7 @@ public class AuthGithubRequest extends AuthDefaultRequest {
HttpHeader header = new HttpHeader();
header.add("Authorization", "token " + authToken.getAccessToken());
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"));

View File

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

View File

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

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -74,7 +75,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
form.put("nsp_svc", "OpenUP.User.getInfo");
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);
@ -111,7 +112,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
}
private AuthToken getAuthToken(String response) {
JSONObject object = JSONObject.parseObject(response);
Kv object = JsonUtil.parseKv(response);
this.checkResponse(object);
@ -159,7 +160,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
* @param object obj
* @return AuthUserGender
*/
private AuthUserGender getRealGender(JSONObject object) {
private AuthUserGender getRealGender(Kv object) {
int genderCodeInt = object.getIntValue("gender");
String genderCode = genderCodeInt == 1 ? "0" : (genderCodeInt == 0) ? "1" : genderCodeInt + "";
return AuthUserGender.getRealGender(genderCode);
@ -170,7 +171,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
*
* @param object 接口返回的结果
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("NSP_STATUS")) {
throw new AuthException(object.getString("error"));
}

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -47,7 +48,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
params.put("grant_type", "authorization_code");
params.put("code", authCallback.getCode());
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);
@ -71,11 +72,11 @@ public class AuthJdRequest extends AuthDefaultRequest {
.queryParam("v", "2.0");
urlBuilder.queryParam("sign", GlobalAuthUtils.generateJdSignature(config.getClientSecret(), urlBuilder.getReadOnlyParams()));
String response = new HttpUtils(config.getHttpConfig()).post(urlBuilder.build(true)).getBody();
JSONObject object = JSONObject.parseObject(response);
Kv object = JsonUtil.parseKv(response);
this.checkResponse(object);
JSONObject data = this.getUserDataJsonObject(object);
Kv data = this.getUserDataJsonObject(object);
return AuthUser.builder()
.rawUserInfo(data)
@ -96,10 +97,10 @@ public class AuthJdRequest extends AuthDefaultRequest {
* @param object 请求返回结果
* @return data JSONObject
*/
private JSONObject getUserDataJsonObject(JSONObject object) {
return object.getJSONObject("jingdong_user_getUserInfoByOpenId_response")
.getJSONObject("getuserinfobyappidandopenid_result")
.getJSONObject("data");
private Kv getUserDataJsonObject(Kv object) {
Kv userInfo = JsonUtil.parseKv(object.getString("jingdong_user_getUserInfoByOpenId_response"));
userInfo = JsonUtil.parseKv(userInfo.getString("getuserinfobyappidandopenid_result"));
return JsonUtil.parseKv(userInfo.getString("data"));
}
@Override
@ -110,7 +111,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
params.put("grant_type", "refresh_token");
params.put("refresh_token", oldToken.getRefreshToken());
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);
@ -126,9 +127,9 @@ public class AuthJdRequest extends AuthDefaultRequest {
.build();
}
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
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;
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -53,8 +54,8 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
}
private AuthToken getAuthToken(String response) {
JSONObject accessTokenObject = checkResponse(response);
JSONObject resultObject = accessTokenObject.getJSONObject("d");
Kv accessTokenObject = checkResponse(response);
Kv resultObject = JsonUtil.parseKv(accessTokenObject.getString("d"));
return AuthToken.builder()
.accessToken(resultObject.getString("accessToken"))
.refreshToken(resultObject.getString("refreshToken"))
@ -62,8 +63,8 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
.build();
}
private JSONObject checkResponse(String response) {
JSONObject accessTokenObject = JSONObject.parseObject(response);
private Kv checkResponse(String response) {
Kv accessTokenObject = JsonUtil.parseKv(response);
if (!"0".equals(accessTokenObject.getString("c"))) {
throw new AuthException(accessTokenObject.getString("m"));
}
@ -77,11 +78,11 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
.queryParam("access_token", authToken.getAccessToken())
.queryParam("open_id", openId)
.build()).getBody();
JSONObject object = JSONObject.parseObject(response);
Kv object = JsonUtil.parseKv(response);
if (!"0".equals(object.getString("c"))) {
throw new AuthException(object.getString("m"));
}
JSONObject resultObject = object.getJSONObject("d");
Kv resultObject = JsonUtil.parseKv(object.getString("d"));
return AuthUser.builder()
.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")
.queryParam("access_token", authToken.getAccessToken())
.build()).getBody();
JSONObject accessTokenObject = checkResponse(response);
Kv accessTokenObject = checkResponse(response);
return accessTokenObject.getString("d");
}

View File

@ -1,6 +1,7 @@
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 me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
@ -44,7 +45,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
params.put("client_id", config.getClientId());
params.put("client_secret", config.getClientSecret());
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()
.accessToken(accessTokenObject.getString("access_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()
.add("Content-Type", "application/x-www-form-urlencoded")
.add("Authorization", "Bearer ".concat(authToken.getAccessToken())), false).getBody();
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("userId"))
@ -81,7 +82,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
params.put("client_id", config.getClientId());
params.put("client_secret", config.getClientSecret());
String userInfo = new HttpUtils(config.getHttpConfig()).post(source.revoke(), params, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
// 返回1表示取消授权成功否则失败
AuthResponseStatus status = object.getBooleanValue("revoked") ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE;
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_secret", config.getClientSecret());
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()
.code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder()

View File

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

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -42,7 +43,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
form.put("grant_type", "authorization_code");
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);
@ -61,7 +62,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
form.put("access_token", authToken.getAccessToken());
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);
@ -86,7 +87,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
form.put("grant_type", "refresh_token");
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);
@ -100,7 +101,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
.build();
}
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error_code")) {
throw new AuthException(object.getString("erroe_msg"));
}

View File

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

View File

@ -1,6 +1,7 @@
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 me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
@ -51,7 +52,7 @@ public class AuthOktaRequest extends AuthDefaultRequest {
.add("content-type", "application/x-www-form-urlencoded")
.add("Authorization", "Basic " + Base64Utils.encode(config.getClientId().concat(":").concat(config.getClientSecret())));
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);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))
@ -83,9 +84,9 @@ public class AuthOktaRequest extends AuthDefaultRequest {
HttpHeader header = new HttpHeader()
.add("Authorization", "Bearer " + authToken.getAccessToken());
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);
JSONObject address = object.getJSONObject("address");
Kv address = object.getKv("address");
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("sub"))
@ -112,7 +113,7 @@ public class AuthOktaRequest extends AuthDefaultRequest {
return AuthResponse.builder().code(status.getCode()).msg(status.getMsg()).build();
}
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"));
}

View File

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

View File

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

View File

@ -1,6 +1,7 @@
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.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
@ -42,7 +43,7 @@ public class AuthProginnRequest extends AuthDefaultRequest {
params.put("grant_type", "authorization_code");
params.put("redirect_uri", config.getRedirectUri());
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);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))
@ -56,7 +57,7 @@ public class AuthProginnRequest extends AuthDefaultRequest {
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken);
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
@ -76,7 +77,7 @@ public class AuthProginnRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"));
}

View File

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

View File

@ -1,7 +1,8 @@
package me.zhyd.oauth.request;
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 me.zhyd.oauth.cache.AuthStateCache;
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.UrlBuilder;
import java.util.List;
import java.util.Objects;
import static me.zhyd.oauth.config.AuthDefaultSource.RENREN;
@ -45,7 +47,7 @@ public class AuthRenrenRequest extends AuthDefaultRequest {
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String response = doGetUserInfo(authToken);
JSONObject userObj = JSONObject.parseObject(response).getJSONObject("response");
Kv userObj = JsonUtil.parseKv(response).getKv("response");
return AuthUser.builder()
.rawUserInfo(userObj)
@ -69,42 +71,42 @@ public class AuthRenrenRequest extends AuthDefaultRequest {
private AuthToken getToken(String url) {
String response = new HttpUtils(config.getHttpConfig()).post(url).getBody();
JSONObject jsonObject = JSONObject.parseObject(response);
if (jsonObject.containsKey("error")) {
throw new AuthException("Failed to get token from Renren: " + jsonObject);
Kv kv = JsonUtil.parseKv(response);
if (kv.containsKey("error")) {
throw new AuthException("Failed to get token from Renren: " + kv);
}
return AuthToken.builder()
.tokenType(jsonObject.getString("token_type"))
.expireIn(jsonObject.getIntValue("expires_in"))
.accessToken(UrlUtil.urlEncode(jsonObject.getString("access_token")))
.refreshToken(UrlUtil.urlEncode(jsonObject.getString("refresh_token")))
.openId(jsonObject.getJSONObject("user").getString("id"))
.tokenType(kv.getString("token_type"))
.expireIn(kv.getIntValue("expires_in"))
.accessToken(UrlUtil.urlEncode(kv.getString("access_token")))
.refreshToken(UrlUtil.urlEncode(kv.getString("refresh_token")))
.openId(kv.getKv("user").getString("id"))
.build();
}
private String getAvatarUrl(JSONObject userObj) {
JSONArray jsonArray = userObj.getJSONArray("avatar");
if (Objects.isNull(jsonArray) || jsonArray.isEmpty()) {
private String getAvatarUrl(Kv userObj) {
List<Kv> kvs = userObj.getListKv("avatar");
if (Objects.isNull(kvs) || kvs.isEmpty()) {
return null;
}
return jsonArray.getJSONObject(0).getString("url");
return kvs.get(0).getString("url");
}
private AuthUserGender getGender(JSONObject userObj) {
JSONObject basicInformation = userObj.getJSONObject("basicInformation");
private AuthUserGender getGender(Kv userObj) {
Kv basicInformation = userObj.getKv("basicInformation");
if (Objects.isNull(basicInformation)) {
return AuthUserGender.UNKNOWN;
}
return AuthUserGender.getRealGender(basicInformation.getString("sex"));
}
private String getCompany(JSONObject userObj) {
JSONArray jsonArray = userObj.getJSONArray("work");
if (Objects.isNull(jsonArray) || jsonArray.isEmpty()) {
private String getCompany(Kv userObj) {
List<Kv> kvs = userObj.getListKv("work");
if (Objects.isNull(kvs) || kvs.isEmpty()) {
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;
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 me.zhyd.oauth.cache.AuthStateCache;
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.UrlBuilder;
import java.util.List;
/**
* slack登录, slack.com
*
@ -40,13 +43,13 @@ public class AuthSlackRequest extends AuthDefaultRequest {
.add("Content-Type", "application/x-www-form-urlencoded");
String response = new HttpUtils(config.getHttpConfig())
.get(accessTokenUrl(authCallback.getCode()), null, header, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response);
Kv accessTokenObject = JsonUtil.parseKv(response);
this.checkResponse(accessTokenObject);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))
.scope(accessTokenObject.getString("scope"))
.tokenType(accessTokenObject.getString("token_type"))
.uid(accessTokenObject.getJSONObject("authed_user").getString("id"))
.uid(accessTokenObject.getKv("authed_user").getString("id"))
.build();
}
@ -57,10 +60,10 @@ public class AuthSlackRequest extends AuthDefaultRequest {
.add("Authorization", "Bearer ".concat(authToken.getAccessToken()));
String userInfo = new HttpUtils(config.getHttpConfig())
.get(userInfoUrl(authToken), null, header, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object);
JSONObject user = object.getJSONObject("user");
JSONObject profile = user.getJSONObject("profile");
Kv user = object.getKv("user");
Kv profile = user.getKv("profile");
return AuthUser.builder()
.rawUserInfo(user)
.uuid(user.getString("id"))
@ -81,7 +84,7 @@ public class AuthSlackRequest extends AuthDefaultRequest {
.add("Authorization", "Bearer ".concat(authToken.getAccessToken()));
String userInfo = new HttpUtils(config.getHttpConfig())
.get(source.revoke(), null, header, false).getBody();
JSONObject object = JSONObject.parseObject(userInfo);
Kv object = JsonUtil.parseKv(userInfo);
this.checkResponse(object);
// 返回1表示取消授权成功否则失败
AuthResponseStatus status = object.getBooleanValue("revoked") ? AuthResponseStatus.SUCCESS : AuthResponseStatus.FAILURE;
@ -93,13 +96,13 @@ public class AuthSlackRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (!object.getBooleanValue("ok")) {
String errorMsg = object.getString("error");
if (object.containsKey("response_metadata")) {
JSONArray array = object.getJSONObject("response_metadata").getJSONArray("messages");
if (null != array && array.size() > 0) {
errorMsg += "; " + String.join(",", array.toArray(new String[0]));
List<String> kvs = object.getKv("response_metadata").getArrayList("messages");
if (null != kvs && kvs.size() > 0) {
errorMsg += "; " + String.join(",", kvs.toArray(new String[0]));
}
}

View File

@ -1,6 +1,7 @@
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.support.HttpHeader;
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");
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);
return AuthToken.builder()
@ -61,9 +62,9 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest {
.queryParam("key", this.config.getStackOverflowKey())
.build();
String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl).getBody();
JSONObject object = JSONObject.parseObject(response);
Kv object = JsonUtil.parseKv(response);
this.checkResponse(object);
JSONObject userObj = object.getJSONArray("items").getJSONObject(0);
Kv userObj = object.getListKv("items").get(0);
return AuthUser.builder()
.rawUserInfo(userObj)
@ -97,7 +98,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest {
*
* @param object 请求响应内容
*/
private void checkResponse(JSONObject object) {
private void checkResponse(Kv object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"));
}

View File

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

View File

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

View File

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

View File

@ -1,6 +1,7 @@
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.support.HttpHeader;
import com.xkcoding.http.util.MapUtil;
@ -134,7 +135,7 @@ public class AuthTwitterRequest extends AuthDefaultRequest {
httpHeader.add("Authorization", header);
String response = new HttpUtils(config.getHttpConfig())
.get(userInfoUrl(authToken), null, httpHeader, false).getBody();
JSONObject userInfo = JSONObject.parseObject(response);
Kv userInfo = JsonUtil.parseKv(response);
return AuthUser.builder()
.rawUserInfo(userInfo)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
package me.zhyd.oauth.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.json.util.Kv;
import com.alibaba.fastjson.JSONPath;
import org.junit.Assert;
import org.junit.Test;
@ -31,7 +31,7 @@ public class JsonPathTest {
Map<String, Object> master = new HashMap<>();
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']");
Assert.assertEquals("xxxx", object);
}