1
0
mirror of synced 2025-12-28 10:47:56 +08:00

🍻 AuthUser 中新增 rawUserInfo,用来存放第三方平台返回的原始用户数据

This commit is contained in:
yadong.zhang
2020-06-07 18:46:00 +08:00
parent 8e5a679129
commit 33385fd30a
49 changed files with 295 additions and 98 deletions

View File

@@ -1,5 +1,6 @@
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;
@@ -80,6 +81,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)))
.uuid(response.getUserId())
.username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName())
.nickname(response.getNickName())

View File

@@ -4,14 +4,17 @@ import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
import me.zhyd.oauth.enums.AuthUserGender;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 阿里云登录
*
* @see <a href=https://help.aliyun.com/document_detail/93696.html?spm=a2c4g.11186623.6.656.146f53e8Tz7IGi>阿里云授权OAuth文档</a>
* @author snippet0809 (https://github.com/snippet0809)
* @since 1.15.5
*/
public class AuthAliyunRequest extends AuthDefaultRequest {
@@ -36,23 +39,19 @@ public class AuthAliyunRequest extends AuthDefaultRequest {
.build();
}
/*
* 用户信息示例(主账号登录时)
* {
* "sub":"PPPpppP+NRsXg/aaAaAAaA==",
* "uid":"1222222222222222",
* "login_name":"阿里云1234",
* "requestid":"6f6af0f2-0f98-4410-a4b0-83bd5e1c1506",
* "name":"root",
* "bid":"22222",
* "aid":"1222222222222222"
* }
*/
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String userInfo = doGetUserInfo(authToken);
JSONObject jsonObject = JSONObject.parseObject(userInfo);
return AuthUser.builder().rawUserInfo(jsonObject).build();
JSONObject object = JSONObject.parseObject(userInfo);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("sub"))
.username(object.getString("login_name"))
.nickname(object.getString("name"))
.gender(AuthUserGender.UNKNOWN)
.token(authToken)
.source(source.toString())
.build();
}
}

View File

@@ -50,6 +50,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.containsKey("userid") ? object.getString("userid") : object.getString("openid"))
.username(object.getString("username"))
.nickname(object.getString("username"))

View File

@@ -47,6 +47,7 @@ public class AuthCodingRequest extends AuthDefaultRequest {
object = object.getJSONObject("data");
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("name"))
.avatar("https://coding.net" + object.getString("avatar"))

View File

@@ -41,6 +41,7 @@ public class AuthCsdnRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(response);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("username"))
.username(object.getString("username"))
.remark(object.getString("description"))

View File

@@ -51,6 +51,7 @@ public class AuthDingTalkRequest extends AuthDefaultRequest {
.unionId(object.getString("unionid"))
.build();
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("unionid"))
.nickname(object.getString("nick"))
.username(object.getString("nick"))

View File

@@ -41,15 +41,16 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
String response = doGetUserInfo(authToken);
JSONObject userInfoObject = JSONObject.parseObject(response);
this.checkResponse(userInfoObject);
JSONObject dataObj = userInfoObject.getJSONObject("data");
JSONObject object = userInfoObject.getJSONObject("data");
return AuthUser.builder()
.uuid(dataObj.getString("union_id"))
.username(dataObj.getString("nickname"))
.nickname(dataObj.getString("nickname"))
.avatar(dataObj.getString("avatar"))
.remark(dataObj.getString("description"))
.gender(AuthUserGender.getRealGender(dataObj.getString("gender")))
.location(String.format("%s %s %s", dataObj.getString("country"), dataObj.getString("province"), dataObj.getString("city")))
.rawUserInfo(object)
.uuid(object.getString("union_id"))
.username(object.getString("nickname"))
.nickname(object.getString("nickname"))
.avatar(object.getString("avatar"))
.remark(object.getString("description"))
.gender(AuthUserGender.getRealGender(object.getString("gender")))
.location(String.format("%s %s %s", object.getString("country"), object.getString("object"), object.getString("city")))
.token(authToken)
.source(source.toString())
.build();

View File

@@ -106,6 +106,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
JSONObject result = object.getJSONObject("result");
return AuthUser.builder()
.rawUserInfo(result)
.uuid(result.getString("userId"))
.username(result.getString("userName"))
.nickname(result.getString("userName"))

View File

@@ -45,6 +45,7 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("name"))
.nickname(object.getString("name"))

View File

@@ -56,11 +56,12 @@ 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);
JSONObject jsonObject = JSON.parseObject(response);
JSONObject object = JSON.parseObject(response);
return AuthUser.builder()
.avatar(jsonObject.getString("AvatarUrl"))
.username(jsonObject.getString("Mobile"))
.email(jsonObject.getString("Email"))
.rawUserInfo(object)
.avatar(object.getString("AvatarUrl"))
.username(object.getString("Mobile"))
.email(object.getString("Email"))
.nickname("Name")
.build();
}

View File

@@ -46,6 +46,7 @@ public class AuthGiteeRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("login"))
.avatar(object.getString("avatar_url"))

View File

@@ -51,6 +51,7 @@ public class AuthGithubRequest extends AuthDefaultRequest {
this.checkResponse(object.containsKey("error"), object.getString("error_description"));
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("login"))
.avatar(object.getString("avatar_url"))

View File

@@ -51,6 +51,7 @@ public class AuthGitlabRequest extends AuthDefaultRequest {
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("username"))
.nickname(object.getString("name"))

View File

@@ -51,6 +51,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("sub"))
.username(object.getString("email"))
.avatar(object.getString("picture"))

View File

@@ -79,6 +79,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
AuthUserGender gender = getRealGender(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("userID"))
.username(object.getString("userName"))
.nickname(object.getString("userName"))

View File

@@ -76,6 +76,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
JSONObject data = this.getUserDataJsonObject(object);
return AuthUser.builder()
.rawUserInfo(data)
.uuid(authToken.getOpenId())
.username(data.getString("nickName"))
.nickname(data.getString("nickName"))

View File

@@ -101,6 +101,7 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
JSONObject resultObject = object.getJSONObject("d");
return AuthUser.builder()
.rawUserInfo(resultObject)
.username(resultObject.getString("userName"))
.nickname(resultObject.getString("userName"))
.avatar(resultObject.getString("avatar"))

View File

@@ -3,7 +3,6 @@ package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
import me.zhyd.oauth.utils.HttpUtils;
import com.xkcoding.http.constants.Constants;
import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache;
@@ -16,6 +15,7 @@ import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.StringUtils;
import me.zhyd.oauth.utils.UrlBuilder;
@@ -62,6 +62,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
// 获取用户邮箱地址
String email = this.getUserEmail(accessToken);
return AuthUser.builder()
.rawUserInfo(userInfoObject)
.uuid(userInfoObject.getString("id"))
.username(userName)
.nickname(userName)
@@ -103,17 +104,27 @@ public class AuthLinkedinRequest extends AuthDefaultRequest {
* @return 用户的头像地址
*/
private String getAvatar(JSONObject userInfoObject) {
String avatar = null;
JSONObject profilePictureObject = userInfoObject.getJSONObject("profilePicture");
if (profilePictureObject.containsKey("displayImage~")) {
JSONArray displayImageElements = profilePictureObject.getJSONObject("displayImage~")
.getJSONArray("elements");
if (null != displayImageElements && displayImageElements.size() > 0) {
JSONObject largestImageObj = displayImageElements.getJSONObject(displayImageElements.size() - 1);
avatar = largestImageObj.getJSONArray("identifiers").getJSONObject(0).getString("identifier");
}
if (null == profilePictureObject || !profilePictureObject.containsKey("displayImage~")) {
return null;
}
return avatar;
JSONObject displayImageObject = profilePictureObject.getJSONObject("displayImage~");
if (null == displayImageObject || !displayImageObject.containsKey("elements")) {
return null;
}
JSONArray displayImageElements = displayImageObject.getJSONArray("elements");
if (null == displayImageElements || displayImageElements.isEmpty()) {
return null;
}
JSONObject largestImageObj = displayImageElements.getJSONObject(displayImageElements.size() - 1);
if (null == largestImageObj || !largestImageObj.containsKey("identifiers")) {
return null;
}
JSONArray identifiers = largestImageObj.getJSONArray("identifiers");
if (null == identifiers || identifiers.isEmpty()) {
return null;
}
return identifiers.getJSONObject(0).getString("identifier");
}
/**

View File

@@ -66,6 +66,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("openid"))
.username(object.getString("nickname"))
.nickname(object.getString("nickname"))

View File

@@ -71,14 +71,15 @@ public class AuthMiRequest extends AuthDefaultRequest {
throw new AuthException(userProfile.getString("description"));
}
JSONObject user = userProfile.getJSONObject("data");
JSONObject object = userProfile.getJSONObject("data");
AuthUser authUser = AuthUser.builder()
.rawUserInfo(object)
.uuid(authToken.getOpenId())
.username(user.getString("miliaoNick"))
.nickname(user.getString("miliaoNick"))
.avatar(user.getString("miliaoIcon"))
.email(user.getString("mail"))
.username(object.getString("miliaoNick"))
.nickname(object.getString("miliaoNick"))
.avatar(object.getString("miliaoIcon"))
.email(object.getString("mail"))
.gender(AuthUserGender.UNKNOWN)
.token(authToken)
.source(source.toString())

View File

@@ -88,6 +88,7 @@ public class AuthMicrosoftRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(userInfo);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("userPrincipalName"))
.nickname(object.getString("displayName"))

View File

@@ -46,6 +46,7 @@ public class AuthOschinaRequest extends AuthDefaultRequest {
JSONObject object = JSONObject.parseObject(response);
this.checkResponse(object);
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("name"))
.nickname(object.getString("name"))

View File

@@ -53,6 +53,7 @@ public class AuthPinterestRequest extends AuthDefaultRequest {
this.checkResponse(object);
JSONObject userObj = object.getJSONObject("data");
return AuthUser.builder()
.rawUserInfo(userObj)
.uuid(userObj.getString("id"))
.avatar(getAvatarUrl(userObj))
.username(userObj.getString("username"))

View File

@@ -61,6 +61,7 @@ public class AuthQqRequest extends AuthDefaultRequest {
String location = String.format("%s-%s", object.getString("province"), object.getString("city"));
return AuthUser.builder()
.rawUserInfo(object)
.username(object.getString("nickname"))
.nickname(object.getString("nickname"))
.avatar(avatar)

View File

@@ -46,6 +46,7 @@ public class AuthRenrenRequest extends AuthDefaultRequest {
JSONObject userObj = JSONObject.parseObject(response).getJSONObject("response");
return AuthUser.builder()
.rawUserInfo(userObj)
.uuid(userObj.getString("id"))
.avatar(getAvatarUrl(userObj))
.nickname(userObj.getString("name"))

View File

@@ -64,6 +64,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest {
JSONObject userObj = object.getJSONArray("items").getJSONObject(0);
return AuthUser.builder()
.rawUserInfo(userObj)
.uuid(userObj.getString("user_id"))
.avatar(userObj.getString("profile_image"))
.location(userObj.getString("location"))

View File

@@ -48,6 +48,7 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
String nick = GlobalAuthUtils.urlDecode(accessTokenObject.getString("taobao_user_nick"));
return AuthUser.builder()
.rawUserInfo(new JSONObject())
.uuid(accessTokenObject.getString("taobao_user_id"))
.username(nick)
.nickname(nick)

View File

@@ -71,6 +71,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
authToken.setUid(object.getString("_id"));
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("_id"))
.username(object.getString("name"))
.nickname(object.getString("name"))

View File

@@ -56,6 +56,7 @@ public class AuthToutiaoRequest extends AuthDefaultRequest {
String anonymousUserName = "匿名用户";
return AuthUser.builder()
.rawUserInfo(user)
.uuid(user.getString("uid"))
.username(isAnonymousUser ? anonymousUserName : user.getString("screen_name"))
.nickname(isAnonymousUser ? anonymousUserName : user.getString("screen_name"))

View File

@@ -138,6 +138,7 @@ public class AuthTwitterRequest extends AuthDefaultRequest {
JSONObject userInfo = JSONObject.parseObject(response);
return AuthUser.builder()
.rawUserInfo(userInfo)
.uuid(userInfo.getString("id_str"))
.username(userInfo.getString("screen_name"))
.nickname(userInfo.getString("name"))

View File

@@ -63,6 +63,7 @@ public class AuthWeChatEnterpriseRequest extends AuthDefaultRequest {
JSONObject userDetail = this.checkResponse(userDetailResponse);
return AuthUser.builder()
.rawUserInfo(userDetail)
.username(userDetail.getString("name"))
.nickname(userDetail.getString("alias"))
.avatar(userDetail.getString("avatar"))

View File

@@ -57,6 +57,7 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest {
}
return AuthUser.builder()
.rawUserInfo(object)
.username(object.getString("nickname"))
.nickname(object.getString("nickname"))
.avatar(object.getString("headimgurl"))

View File

@@ -56,6 +56,7 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest {
}
return AuthUser.builder()
.rawUserInfo(object)
.username(object.getString("nickname"))
.nickname(object.getString("nickname"))
.avatar(object.getString("headimgurl"))

View File

@@ -64,6 +64,7 @@ public class AuthWeiboRequest extends AuthDefaultRequest {
throw new AuthException(object.getString("error"));
}
return AuthUser.builder()
.rawUserInfo(object)
.uuid(object.getString("id"))
.username(object.getString("name"))
.avatar(object.getString("profile_image_url"))