提交 4c8fdbae 编写于 作者: 智布道's avatar 智布道 👁

📝 修复“淘宝”平台授权登录后没有`uid`的问题、增加刷新token的功能

上级 e8db2dd2
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
### 2021/6/3 ### 2021/6/3
- 发布 v1.16.1 - 发布 v1.16.2
- 新增 - 新增
- 集成“程序员客栈”平台登录 - 集成“程序员客栈”平台登录
- 修改 - 修改
- 更新文档 - 更新文档
- 修复“淘宝”平台授权登录后没有`uid`的问题、增加刷新token的功能
## 1.16.1 ## 1.16.1
......
...@@ -4,12 +4,16 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,12 +4,16 @@ import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
import me.zhyd.oauth.enums.AuthResponseStatus;
import me.zhyd.oauth.enums.AuthUserGender; import me.zhyd.oauth.enums.AuthUserGender;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.GlobalAuthUtils; import me.zhyd.oauth.utils.GlobalAuthUtils;
import me.zhyd.oauth.utils.HttpUtils;
import me.zhyd.oauth.utils.StringUtils;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
/** /**
...@@ -33,6 +37,26 @@ public class AuthTaobaoRequest extends AuthDefaultRequest { ...@@ -33,6 +37,26 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
return AuthToken.builder().accessCode(authCallback.getCode()).build(); return AuthToken.builder().accessCode(authCallback.getCode()).build();
} }
private AuthToken getAuthToken(JSONObject object) {
this.checkResponse(object);
return AuthToken.builder()
.accessToken(object.getString("access_token"))
.expireIn(object.getIntValue("expires_in"))
.tokenType(object.getString("token_type"))
.idToken(object.getString("id_token"))
.refreshToken(object.getString("refresh_token"))
.uid(object.getString("taobao_user_id"))
.openId(object.getString("taobao_open_uid"))
.build();
}
private void checkResponse(JSONObject object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error_description"));
}
}
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String response = doPostAuthorizationCode(authToken.getAccessCode()); String response = doPostAuthorizationCode(authToken.getAccessCode());
...@@ -40,16 +64,12 @@ public class AuthTaobaoRequest extends AuthDefaultRequest { ...@@ -40,16 +64,12 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
if (accessTokenObject.containsKey("error")) { if (accessTokenObject.containsKey("error")) {
throw new AuthException(accessTokenObject.getString("error_description")); throw new AuthException(accessTokenObject.getString("error_description"));
} }
authToken.setAccessToken(accessTokenObject.getString("access_token")); authToken = this.getAuthToken(accessTokenObject);
authToken.setRefreshToken(accessTokenObject.getString("refresh_token"));
authToken.setExpireIn(accessTokenObject.getIntValue("expires_in"));
authToken.setUid(accessTokenObject.getString("taobao_user_id"));
authToken.setOpenId(accessTokenObject.getString("taobao_open_uid"));
String nick = GlobalAuthUtils.urlDecode(accessTokenObject.getString("taobao_user_nick")); String nick = GlobalAuthUtils.urlDecode(accessTokenObject.getString("taobao_user_nick"));
return AuthUser.builder() return AuthUser.builder()
.rawUserInfo(new JSONObject()) .rawUserInfo(accessTokenObject)
.uuid(accessTokenObject.getString("taobao_user_id")) .uuid(StringUtils.isEmpty(authToken.getUid()) ? authToken.getOpenId() : authToken.getUid())
.username(nick) .username(nick)
.nickname(nick) .nickname(nick)
.gender(AuthUserGender.UNKNOWN) .gender(AuthUserGender.UNKNOWN)
...@@ -58,6 +78,17 @@ public class AuthTaobaoRequest extends AuthDefaultRequest { ...@@ -58,6 +78,17 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
.build(); .build();
} }
@Override
public AuthResponse refresh(AuthToken oldToken) {
String tokenUrl = refreshTokenUrl(oldToken.getRefreshToken());
String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl);
JSONObject accessTokenObject = JSONObject.parseObject(response);
return AuthResponse.builder()
.code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getAuthToken(accessTokenObject))
.build();
}
/** /**
* 返回带{@code state}参数的授权url,授权回调时会带上这个{@code state} * 返回带{@code state}参数的授权url,授权回调时会带上这个{@code state}
* *
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册