diff --git a/README.en-US.md b/README.en-US.md
index 7bea0fabc7ea7146e3046662e26b47cd4b37e8c7..3e1de396307ee97441e259c485c1f2baad9b5fd2 100644
--- a/README.en-US.md
+++ b/README.en-US.md
@@ -148,57 +148,6 @@ Note, that since [v1.14.0](https://gitee.com/yadong.zhang/JustAuth/releases/v1.1
```
-
-**Examples**:
-- [Springboot Example](https://github.com/justauth/JustAuth-demo)
-- [jFinal Example](https://github.com/xkcoding/jfinal-justauth-demo): by [xkcoding](https://github.com/xkcoding)
-- [ActFramework Example](https://github.com/xkcoding/act-justauth-demo): by [xkcoding](https://github.com/xkcoding)
-- [Nutzboot Example](https://github.com/EggsBlue/nutzboot-justauth-demo): by [蛋蛋](https://github.com/EggsBlue)
-- [Blade Example](https://github.com/justauth/blade-justauth-demo)
-
-**Springboot Starter**
-
-- [justauth-spring-boot-starter](https://github.com/xkcoding/justauth-spring-boot-starter): Spring Boot integrates best practices with JustAuth by [xkcoding](https://github.com/xkcoding)
-- [justauth-spring-boot-starter-demo](https://github.com/justauth/justauth-spring-boot-starter-demo): Justauth-spring-boot-starter demo project by [xkcoding](https://github.com/xkcoding)
-
-#### API
-| :computer: platform | :coffee: API | :page_facing_up: Official document |
-|:------:|:-------:|:-------:|
-| | [AuthGiteeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java) | 参考文档 |
-| | [AuthGithubRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java) | 参考文档 |
-| | [AuthWeiboRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java) | 参考文档 |
-| | [AuthDingTalkRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java) | 参考文档 |
-| | [AuthBaiduRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java) | 参考文档 |
-| | [AuthCodingRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java) | 参考文档 |
-| | [AuthTencentCloudRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java) | 参考文档 |
-| | [AuthOschinaRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java) | 参考文档 |
-| | [AuthAlipayRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java) | 参考文档 |
-| | [AuthQqRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java) | 参考文档 |
-| | [AuthWeChatOpenRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java) | 参考文档 |
-| | [AuthWeChatMpRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java) | 参考文档 |
-| | [AuthWeChatEnterpriseRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java) | 参考文档 |
-| | [AuthTaobaoRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java) | 参考文档 |
-| | [AuthGoogleRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java) | 参考文档 |
-| | [AuthFacebookRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java) | 参考文档 |
-| | [AuthDouyinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java) | 参考文档 |
-| | [AuthLinkedinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java) | 参考文档 |
-| | [AuthMicrosoftRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java) | 参考文档 |
-| | [AuthMiRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java) | 参考文档 |
-| | [AuthToutiaoRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java) | 参考文档 |
-| | [AuthTeambitionRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java) | 参考文档 |
-| | [AuthRenrenRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java) | 参考文档 |
-| | [AuthPinterestRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java) | 参考文档 |
-| | [AuthStackOverflowRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java) | 参考文档 |
-| | [AuthHuaweiRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java) | 参考文档 |
-| | [AuthKujialeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java) | 参考文档 |
-| | [AuthGitlabRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java) | 参考文档 |
-| | [AuthMeituanRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java) | 参考文档 |
-| | [AuthElemeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java) | 参考文档 |
-| | [AuthTwitterRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java) | 参考文档 |
-| | [AuthCsdnRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java) | 无 |
-
-
-
## Contributions
1. Fork this project to your repository
@@ -215,6 +164,10 @@ I look forward to your joining us.
[contributors](https://docs.justauth.whnb.wang/#/contributors)
+## Change Logs
+
+[CHANGELOGS](https://docs.justauth.whnb.wang/#/update)
+
## Recommend
- `spring-boot-demo` In-depth study and actual combat of spring boot projects: [https://github.com/xkcoding/spring-boot-demo](https://github.com/xkcoding/spring-boot-demo)
diff --git a/README.md b/README.md
index 0e1b0639190e129d681bfca8f561a9d951305d10..930d3cbef139e893f195d5591950167b5f20a3c1 100644
--- a/README.md
+++ b/README.md
@@ -165,6 +165,10 @@ authRequest.login(callback);
[contributors](https://docs.justauth.whnb.wang/#/contributors)
+## 更新记录
+
+[CHANGELOGS](https://docs.justauth.whnb.wang/#/update)
+
## 致谢
在项目立项初期,也对当前开源圈的一些相同类型的项目作过调研,同时本项目也参考过这些项目,再次感谢开源圈内的朋友。
diff --git a/docs/_media/contributor/f4af112a.png b/docs/_media/contributor/f4af112a.png
new file mode 100644
index 0000000000000000000000000000000000000000..1832cc122cb58718fcf63f43ec6dfd2bd2c2bdfd
Binary files /dev/null and b/docs/_media/contributor/f4af112a.png differ
diff --git a/docs/_media/oauth/2055a056.png b/docs/_media/oauth/2055a056.png
new file mode 100644
index 0000000000000000000000000000000000000000..222fd022a81ec7a4389cd760e8d75378e9bbdd0d
Binary files /dev/null and b/docs/_media/oauth/2055a056.png differ
diff --git a/docs/_media/oauth/4f3da199.png b/docs/_media/oauth/4f3da199.png
new file mode 100644
index 0000000000000000000000000000000000000000..59a963952f4a19559f9273d3426b8ea8a54edd23
Binary files /dev/null and b/docs/_media/oauth/4f3da199.png differ
diff --git a/docs/_media/oauth/673628f8.png b/docs/_media/oauth/673628f8.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab122256d966396fef1f9fbf5b428291eeab492e
Binary files /dev/null and b/docs/_media/oauth/673628f8.png differ
diff --git a/docs/_media/oauth/7bc9ea47.png b/docs/_media/oauth/7bc9ea47.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5468d9433e6c04f6ddd4b4273e93e8f7716ed09
Binary files /dev/null and b/docs/_media/oauth/7bc9ea47.png differ
diff --git a/docs/_media/oauth/930e0825.png b/docs/_media/oauth/930e0825.png
new file mode 100644
index 0000000000000000000000000000000000000000..62aa374a96f9a447b15021a8dfdfa37024914d79
Binary files /dev/null and b/docs/_media/oauth/930e0825.png differ
diff --git a/docs/_media/oauth/f44fb011.png b/docs/_media/oauth/f44fb011.png
new file mode 100644
index 0000000000000000000000000000000000000000..fca71ad3006f1353be1b43011b2e9f88729056c1
Binary files /dev/null and b/docs/_media/oauth/f44fb011.png differ
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
index e12a4e6f64c6415ea6af78010cdfdb2fec8adec2..c6d0b2c345135c5536a86e94cb31726328a65750 100644
--- a/docs/_sidebar.md
+++ b/docs/_sidebar.md
@@ -15,6 +15,7 @@
- [√ 酷家乐登录](oauth/kujiale.md)
- [√ 推特登录](oauth/twitter.md)
- [√ Coding登录](oauth/coding.md)
+ - [√ 阿里云登录](oauth/aliyun.md)
- [CSDN登录](oauth/csdn.md)
- [微信企业版登录](oauth/wechatEnterprise.md)
- [微信公众平台登录](oauth/wechat_mp.md)
diff --git a/docs/contributors.md b/docs/contributors.md
index 58ed19bb68dd8fd480cf664cd689da492d2bc11b..8bfc18c5e7f733a55eacc5ca8978dceae8f270c3 100644
--- a/docs/contributors.md
+++ b/docs/contributors.md
@@ -31,6 +31,8 @@
- 增加飞书授权登录
- · runningzyp : [Github]
- 修改文案错误
+- · Spet : [Github]
+ - 集成阿里云授权登录
- 千年等一回,我只为等你...
ps: 如有遗漏,请告知
diff --git a/docs/oauth/aliyun.md b/docs/oauth/aliyun.md
new file mode 100644
index 0000000000000000000000000000000000000000..a4929ea55775cba55ef1446d0030b019759bbbf3
--- /dev/null
+++ b/docs/oauth/aliyun.md
@@ -0,0 +1,181 @@
+## 1. 授权流程
+![](../_media/oauth/7bc9ea47.png)
+1. 用户通过浏览器登录Web应用。
+2. Web应用重定向到阿里云OAuth 2.0服务并将URL返回给浏览器。
+注:如果用户还未登录,则会进一步重定向到阿里云登录服务。
+3. 用户通过浏览器登录阿里云OAuth 2.0服务并申请授权码。
+4. 阿里云OAuth 2.0服务重定向到Web应用并返回授权码给浏览器。
+5. 浏览器通过Web应用使用授权码向阿里云OAuth 2.0服务申请代表用户身份的令牌。
+6. 阿里云OAuth 2.0服务向Web应用返回令牌。
+7. Web应用通过获取的令牌向阿里云发起访问API的请求。
+
+## 2. 配置应用
+
+### 2.1 创建应用
+
+1. 云账号登录[RAM控制台](https://ram.console.aliyun.com/?spm=a2c4g.11186623.2.8.46a779b5dxuzTy)。
+2. 在左侧导航栏,单击OAuth应用管理。
+3. 单击创建应用。
+4. 输入应用名称和应用显示名称。
+5. 选择应用类型。(这儿选择 WebApp 即可)
+ - WebApp: 指基于浏览器交互的网络应用。
+ - NativeApp:指操作系统中运行的本地应用,主要为运行在桌面操作系统或移动操作系统中的应用。
+ - ServerApp:指直接访问阿里云服务,而无需依赖用户登录的应用,目前仅支持基于SCIM协议的用户同步应用。示例请参见[通过SCIM协议将企业内部账号同步到阿里云RAM](https://help.aliyun.com/document_detail/162674.html?spm=a2c4g.11186623.2.9.46a779b5dxuzTy#task-2471389)。
+6. 根据需要修改访问令牌有效期时长。
+注:有效期可设置范围为:15分钟至3小时,默认为3600秒。
+7. 根据需要修改刷新令牌有效期时长。
+注:有效期可设置范围为:2小时至1年,默认为2592000秒。
+8. 输入回调地址。![](../_media/oauth/4f3da199.png)
+9. 单击确定完成应用创建。
+
+### 2.2 配置应用 OAuth 范围
+
+![](../_media/oauth/f44fb011.png)
+
+如上,除了默认的 openid 外,再单独增加两条 scope:
+- aliuid:阿里云颁发的唯一用户标志符
+- profile:用户的名称等个人信息
+
+scope 对应获取的用户信息关系表如下:
+
+![](../_media/oauth/673628f8.png)
+
+### 2.3 配置密钥
+
+应用创建完成后,进入应用详情:
+
+![](../_media/oauth/2055a056.png)
+
+切换到 “应用密钥” 选项页,创建密钥
+
+![](../_media/oauth/930e0825.png)
+
+注:密钥创建完成后记得要保存,因为密钥只能在创建完成后明文显示一次,如丢失或者忘记,请重新创建。
+
+## 3. 集成JustAuth
+
+
+### 2.1 引入依赖
+
+```xml
+
+ me.zhyd.oauth
+ JustAuth
+ ${latest.version}
+
+```
+
+`${latest.version}`表示当前最新的版本,可以在[这儿](https://github.com/justauth/JustAuth/releases)获取最新的版本信息。
+
+### 2.2 创建Request
+
+```java
+AuthRequest authRequest = new AuthAliyunRequest(AuthConfig.builder()
+ .clientId("APPID")
+ .clientSecret("应用私钥")
+ .alipayPublicKey("支付宝公钥")
+ .redirectUri("https://www.zhyd.me/oauth/callback/alipay")
+ .build());
+```
+
+### 2.3 生成授权地址
+
+我们可以直接使用以下方式生成第三方平台的授权链接:
+```java
+String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
+```
+这个链接我们可以直接后台重定向跳转,也可以返回到前端后,前端控制跳转。前端控制的好处就是,可以将第三方的授权页嵌入到iframe中,适配网站设计。
+
+
+### 2.4 以上完整代码如下
+
+```java
+import me.zhyd.oauth.config.AuthConfig;
+import me.zhyd.oauth.request.AuthAliyunRequest;
+import me.zhyd.oauth.model.AuthCallback;
+import me.zhyd.oauth.request.AuthRequest;
+import me.zhyd.oauth.utils.AuthStateUtils;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+
+@RestController
+@RequestMapping("/oauth")
+public class RestAuthController {
+
+ @RequestMapping("/render")
+ public void renderAuth(HttpServletResponse response) throws IOException {
+ AuthRequest authRequest = getAuthRequest();
+ response.sendRedirect(authRequest.authorize(AuthStateUtils.createState()));
+ }
+
+ @RequestMapping("/callback")
+ public Object login(AuthCallback callback) {
+ AuthRequest authRequest = getAuthRequest();
+ return authRequest.login(callback);
+ }
+
+ private AuthRequest getAuthRequest() {
+ return new AuthAliyunRequest(AuthConfig.builder()
+ .clientId("APPID")
+ .clientSecret("应用私钥")
+ .redirectUri("回调地址")
+ .build());
+ }
+}
+```
+
+## 3. 授权结果
+
+```json
+{
+ "code": 2000,
+ "msg": null,
+ "data": {
+ "uuid": "lmwxxxw==",
+ "username": "yadong.zhang0415@gmail.com",
+ "nickname": "root",
+ "avatar": null,
+ "blog": null,
+ "company": null,
+ "location": null,
+ "email": null,
+ "remark": null,
+ "gender": "UNKNOWN",
+ "source": "ALIYUN",
+ "token": {
+ "accessToken": "xxxx",
+ "expireIn": 3599,
+ "refreshToken": null,
+ "uid": null,
+ "openId": null,
+ "accessCode": null,
+ "unionId": null,
+ "scope": null,
+ "tokenType": "Bearer",
+ "idToken": "xxxxx",
+ "macAlgorithm": null,
+ "macKey": null,
+ "code": null,
+ "oauthToken": null,
+ "oauthTokenSecret": null,
+ "userId": null,
+ "screenName": null,
+ "oauthCallbackConfirmed": null
+ },
+ "rawUserInfo": {
+ "sub": "lmwtxxxZ9ezw==",
+ "uid": "193xxx",
+ "login_name": "yadong.zhang0415@gmail.com",
+ "requestid": "544effc2-f7ba-4ac7-8af4-da2739e50e04",
+ "name": "root",
+ "bid": "2xxx42",
+ "aid": "193xxx"
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/docs/oauth/coding.md b/docs/oauth/coding.md
index 49e6399bd50c747dbc6c3d87f19b1f86fe08464f..4b096ca06b4d7cf7c34b8f18a0ac6a826d9da2ec 100644
--- a/docs/oauth/coding.md
+++ b/docs/oauth/coding.md
@@ -58,7 +58,7 @@ String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
```java
import me.zhyd.oauth.config.AuthConfig;
-import me.zhyd.oauth.request.AuthWeiboRequest;
+import me.zhyd.oauth.request.AuthCodingRequest;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.request.AuthRequest;
@@ -94,7 +94,7 @@ public class RestAuthController {
}
private AuthRequest getAuthRequest() {
- return new AuthTencentCloudRequest(AuthConfig.builder()
+ return new AuthCodingRequest(AuthConfig.builder()
.clientId("App Key")
.clientSecret("App Secret")
.redirectUri("授权回调页")
diff --git a/docs/references.md b/docs/references.md
index 79583b73378ba6e30e2007857e48f22d396586b7..81b8d068d32aa2b3b0e36144e674ffd755bf14ef 100644
--- a/docs/references.md
+++ b/docs/references.md
@@ -25,7 +25,7 @@
- Facebook
- 抖音
- 领英
-- 微软
+- 微软
- 小米
- 头条
- Teambition
@@ -41,3 +41,6 @@
- 用户信息
- 响应码
- Callback Urls规则
+- 阿里云
+ - [Web应用登录阿里云](https://help.aliyun.com/document_detail/93696.html?spm=a2c4g.11186623.6.656.1a764138vhg4gr)
+ - [通过OIDC获取用户信息](https://help.aliyun.com/document_detail/93698.html?spm=a2c4g.11186623.6.658.537dd19eE1eEJh)
\ No newline at end of file
diff --git a/docs/update.md b/docs/update.md
index f3478f4d3a604cc9ac5497c8c638fb2c580b41de..dde44934a2df763483f7f21684479d0f7809fc0e 100644
--- a/docs/update.md
+++ b/docs/update.md
@@ -1,9 +1,11 @@
## 1.15.5-alpha
### 2020/06/07
-- 修复
+- BUG
- 解决 `Microsoft` 授权失败的 BUG
- 解决 `Coding` 个人账号授权失败的 BUG(目前只能使用团队模式进行授权,需要传入团队名,参考`AuthConfig#codingGroupName`)
+ - 解决 `AuthLinkedinRequest#getAvatar` NPE 的问题。(领英用户没有头像时,原代码会报 NPE)
- 新增
+ - AuthUser 中新增 `rawUserInfo`,用来存放第三方平台返回的原始用户数据。注:淘宝平台的`rawUserInfo`为一个空 JSON
- 支持 Http 级的代理配置,使用方式:
```java
new AuthGoogleRequest(AuthConfig.builder()
@@ -17,15 +19,23 @@ new AuthGoogleRequest(AuthConfig.builder()
.build())
.build());
```
+- 修改
+
- 删除
- 删除**腾讯云登录**。coding 已并入 腾讯云,因此只保留 coding 登录
- 文档
- 新增 [Coding登录](oauth/coding.md)文档
- 完善 [支付宝登录](oauth/alipay.md)文档
+ - 完善 [贡献者名单](contributors.md)文档
+ - 完善 [参考文档](references.md)文档
- PR
- 合并 [Gitee!17](https://gitee.com/yadong.zhang/JustAuth/pulls/17)
- 合并 [Gitee!15](https://gitee.com/yadong.zhang/JustAuth/pulls/15)
-
+ - 合并 [Github#81](https://github.com/justauth/JustAuth/pull/81)
+- Issues
+ - 解决 [Github#80](https://github.com/justauth/JustAuth/issues/80)
+ - 解决 [Github#75](https://github.com/justauth/JustAuth/issues/75)
+
## 1.15.4-alpha
### 2020/05/13
- 修复
diff --git a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
index 1794bf345996ba85aef39a6cb7c7a95c6bb3cdf1..c47b6dc844759a445f17d8e65f31bf0a888d0b9e 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
@@ -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())
diff --git a/src/main/java/me/zhyd/oauth/request/AuthAliyunRequest.java b/src/main/java/me/zhyd/oauth/request/AuthAliyunRequest.java
index 137c237a6b3d2213f05f156809210762d1fe6236..6cb651f7d1019b325cfa0f609170d09d4306ef42 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthAliyunRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthAliyunRequest.java
@@ -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 阿里云授权(OAuth)文档
+ * @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();
}
}
diff --git a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
index 0ad7fad9f5499139eb0cad5d20013f534c2c607a..4e8f5c83dafb1ffefd0870bb54ce43355f30194c 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
index ca974a505c991a96acce5853bcef5527ccdcc88c..8acf798299dcd229a7188b7c743eedbb865441de 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
index fab84f37b71453395aab9bb02343502f9daf1973..074a38d0b7de9958371e1d1372bd999f3e8a08e9 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
index 1332e995c4d836f84f89c39edbd3693247f67088..56e550b1ccf8d8defda9f5b67b6e728f72eca11a 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
index 6529829c2be134c4f900d4ddd281a0c2ec2805b1..b8c1a38a9038a210d374f61966ba9a983daeb055 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
@@ -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();
diff --git a/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java
index 579d4411a7e3b1897b8d435b7f1f9f0f332b47a4..bb2d02e0bfea88b2109e5b01e913d47b26114e44 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java b/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java
index d192110c6428b7065127abb608dcbfe196ee57c2..6224629ef1640eeac4ff74696273d287709daac5 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java b/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java
index 93689edd9fe4fb706e7f696e75319c8ac2d062fa..65567245273702a97f57d5533107a358542892b2 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java
@@ -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();
}
diff --git a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
index 9f95f0b15a29d7a94f5e5684e000bd4d2ac95043..0a21cecbc90ffd7276217f239ed6e3097cbec739 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java
index 98a616b2be3bb51ca85d8a3447df4fd3ccac32a3..1db81019310a1e2c754d93868a605da2be400f6f 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java
index 7c5f0b467348cee4ee5c51a3d2854ca7457cbafd..f27e64594cb9d2d308685b1262caf668095bedb7 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java
index e3e9c6332c5824876015f2cfc216337d12725088..181eb1b62251b686150d1317517bd71907d9e88d 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java
index 5fbeec3d213877ca394e7d3daccf3f72c052d33b..b6b10fc2c975c5e1f2d5c610cfc4e605766f0a8e 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java b/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java
index 7fd18d46c544696db038a1f55380d8a96629f8a2..830ba0f1ab47e3c738406359478386c2e34f8f84 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java
index 2c9caa9b5585e202f05824fbb4f31a1d6710af3d..d0e751bfa5faf0019e89733496de3091aae9276d 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java
index ba255cdccaec95045d93fd87b56ec2cd3438304e..3a2292aa9133b0ab7659851eeef1bc81711e758d 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java
@@ -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;
+ }
+ 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 avatar;
+ return identifiers.getJSONObject(0).getString("identifier");
}
/**
diff --git a/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java
index 6ebff5789d2dcd73223e56f96594dd83b8d8d5fc..bdbbc4d02bb9160801f6323be6609de2e95f0230 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java
index 878083f4a0eaebc959a828794c052abae3934613..bee937bcb0ac84ad3854b87e97b5a37ce403f01e 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java
@@ -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())
diff --git a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java
index 61390fbce82db96fdf5ba3db467bbeee787b09ba..dbc75c6670d4f66791503335b8961445bb7e6003 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java b/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
index 4019ad829f0eecec774e18ce3a8209f216c5582a..af5eb4e0319e15e7fa1f639619a1a86c7ca30707 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java
index c3fd0b5f60bbbd3ba51f232e925b687d9c49bc57..dc1d22307745f0daccc317a26078188ffd6f4287 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
index f2c1b777f9e0bfdc0e03d5f0fdaf0e3e965adee7..59cc275e2d6fd0434b0110fd0ff311d535f6b821 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
@@ -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)
diff --git a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java
index 55d7d81bc9014f8fc9eb437e8ff80bce487aa51f..66238761eff2e65f3d9b604d9a801064d24b1d72 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java
index 27c3f2812716a468e27bea408f67e17e76512ed7..9c301bb2748cf387b82eac80ca10009adb9b0dd0 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java
index 6d8ef09b2bd5fb87b1b4fdc225e50e7b24d6954d..92505aae857147b95399298f1590954901bb12d4 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java
@@ -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)
diff --git a/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java
index cb6a743cfa04e6b6566308046cd5c46c0369af62..ccb092386b41967728776580e931c8da62d6d7b6 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java b/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java
index 999f7748b7d58de7ce089a7cdedcb0b7df24b092..ef6a84b8dbc589d76f4a59b5891793ea43025698 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java
index 65ba5cac84d5f6722fbb65f538a673c96fb6fcb3..abb6c56714caad6aaa1716bc1546f65bdb4f75c4 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java
index 389be7a24fc59506a69157dd7f353c6afea235d2..799d5a0b9aa88e3100d02c91f04ea796e6632624 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java
index 8b78bd100bb5562a73020aaa8ddd64a7676d9534..8538b5d66a66379b11352d313fff70af9ba69413 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java
index e04bda9d271e3e86ce13c71f8b4192313e40ecdc..bc8a26363cf88a9f92b0d4d1dcdd94c18c8b2e1d 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java
@@ -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"))
diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
index 362645bc7407800dd6f3350156494f8dcbcb920a..1f18c83ab7912368206ffa1ecd5f4ef8dd214ee5 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
@@ -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"))