1
0
mirror of synced 2026-05-22 21:53:18 +00:00
Files
JustAuth/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java
T

70 lines
2.8 KiB
Java
Raw Normal View History

2019-05-21 15:09:16 +08:00
package me.zhyd.oauth.request;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig;
2019-06-20 10:10:18 +08:00
import me.zhyd.oauth.config.AuthSource;
2019-05-21 15:09:16 +08:00
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthCallback;
2019-05-21 15:09:16 +08:00
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
2019-06-18 19:21:05 +08:00
import me.zhyd.oauth.model.AuthUserGender;
2019-07-16 17:59:36 +08:00
import me.zhyd.oauth.url.AuthGoogleUrlBuilder;
import me.zhyd.oauth.url.entity.AuthUserInfoEntity;
2019-05-21 15:09:16 +08:00
/**
* Google登录
*
* @author yangkai.shen (https://xkcoding.com)
* @version 1.3
* @since 1.3
*/
2019-07-16 17:59:36 +08:00
public class AuthGoogleRequest extends AuthDefaultRequest {
2019-05-21 15:09:16 +08:00
public AuthGoogleRequest(AuthConfig config) {
2019-07-16 17:59:36 +08:00
super(config, AuthSource.GOOGLE, new AuthGoogleUrlBuilder());
2019-05-21 15:09:16 +08:00
}
@Override
protected AuthToken getAccessToken(AuthCallback authCallback) {
2019-07-16 17:42:52 +08:00
String accessTokenUrl = this.urlBuilder.getAccessTokenUrl(authCallback.getCode());
2019-05-21 15:09:16 +08:00
HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
2019-06-28 22:58:34 +08:00
JSONObject accessTokenObject = JSONObject.parseObject(response.body());
2019-05-21 15:09:16 +08:00
2019-06-28 22:58:34 +08:00
if (accessTokenObject.containsKey("error") || accessTokenObject.containsKey("error_description")) {
throw new AuthException("get google access_token has error:[" + accessTokenObject.getString("error") + "], error_description:[" + accessTokenObject
2019-05-21 15:09:16 +08:00
.getString("error_description") + "]");
}
return AuthToken.builder()
2019-06-28 22:58:34 +08:00
.accessToken(accessTokenObject.getString("access_token"))
.expireIn(accessTokenObject.getIntValue("expires_in"))
.scope(accessTokenObject.getString("scope"))
.tokenType(accessTokenObject.getString("token_type"))
.idToken(accessTokenObject.getString("id_token"))
2019-05-21 15:09:16 +08:00
.build();
}
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
String accessToken = authToken.getIdToken();
HttpResponse response = HttpRequest.get(this.urlBuilder.getUserInfoUrl(AuthUserInfoEntity.builder()
.accessToken(accessToken)
.build())).execute();
2019-05-21 15:09:16 +08:00
String userInfo = response.body();
JSONObject object = JSONObject.parseObject(userInfo);
return AuthUser.builder()
2019-05-24 09:41:39 +08:00
.uuid(object.getString("sub"))
2019-05-21 15:09:16 +08:00
.username(object.getString("name"))
.avatar(object.getString("picture"))
.nickname(object.getString("name"))
.location(object.getString("locale"))
.email(object.getString("email"))
2019-07-17 21:34:41 +08:00
.gender(AuthUserGender.UNKNOWN)
2019-05-21 15:09:16 +08:00
.token(authToken)
.source(AuthSource.GOOGLE)
.build();
}
}