提交 bb613010 编写于 作者: 不合群的混子's avatar 不合群的混子

🏗 架构调整,简化代码

上级 937fba37
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 支付宝授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class AlipayAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getAlipayAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
/**
* 授权接口,用来获取具体第三方平台的授权地址
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public interface Authorization {
/**
* 获取授权页面地址
*
* @param config 授权基础配置
* @return 授权页面地址
*/
String getAuthorizeUrl(AuthConfig config);
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
import me.zhyd.oauth.request.ResponseStatus;
import java.util.HashMap;
import java.util.Map;
/**
* 授权工厂类,负责创建指定平台的授权类获取授权地址
* <p>
* 使用策略模式 + 工厂模式 避免大量的if else(swatch)操作
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class AuthorizationFactory {
private static Map<String, Authorization> authorizationMap = new HashMap<>();
private static boolean loader = false;
private AuthorizationFactory() {
}
/**
* 根据第三方平台,获取具体的授权工具
*
* @param source 平台
* @return 具体的Authorization
*/
public static Authorization getAuthorize(AuthSource source) {
if (null == source) {
throw new AuthException(ResponseStatus.NO_AUTH_SOURCE);
}
registerAllAuthorize();
Authorization authorization = authorizationMap.get(source.toString());
if (null == authorization) {
throw new AuthException(ResponseStatus.UNIDENTIFIED_PLATFORM);
}
return authorization;
}
/**
* 将所有Authorize的实现类注册到authorizeMap中,
* 每次增加新的平台都需要在这儿添加注册代码
*/
private static void registerAllAuthorize() {
if (loader) {
return;
}
AuthorizationFactory.register(AuthSource.ALIPAY, new AlipayAuthorization());
AuthorizationFactory.register(AuthSource.BAIDU, new BaiduAuthorization());
AuthorizationFactory.register(AuthSource.CODING, new CodingAuthorization());
AuthorizationFactory.register(AuthSource.CSDN, new CsdnAuthorization());
AuthorizationFactory.register(AuthSource.DINGTALK, new DingTalkAuthorization());
AuthorizationFactory.register(AuthSource.GITEE, new GiteeAuthorization());
AuthorizationFactory.register(AuthSource.GITHUB, new GithubAuthorization());
AuthorizationFactory.register(AuthSource.GOOGLE, new GoogleAuthorization());
AuthorizationFactory.register(AuthSource.OSCHINA, new OschinaAuthorization());
AuthorizationFactory.register(AuthSource.QQ, new QqAuthorization());
AuthorizationFactory.register(AuthSource.TAOBAO, new TaobaoAuthorization());
AuthorizationFactory.register(AuthSource.TENCENT_CLOUD, new TencentCloudAuthorization());
AuthorizationFactory.register(AuthSource.WECHAT, new WeChatAuthorization());
AuthorizationFactory.register(AuthSource.WEIBO, new WeiboAuthorization());
AuthorizationFactory.register(AuthSource.FACEBOOK, new FacebookAuthorization());
AuthorizationFactory.register(AuthSource.DOUYIN, new DouyinAuthorization());
AuthorizationFactory.register(AuthSource.LINKEDIN, new LinkedinAuthorization());
AuthorizationFactory.register(AuthSource.MICROSOFT, new MicrosoftAuthorization());
AuthorizationFactory.register(AuthSource.MI, new MiAuthorization());
AuthorizationFactory.register(AuthSource.TOUTIAO, new ToutiaoAuthorization());
loader = true;
}
private static void register(AuthSource authSource, Authorization authorization) {
authorizationMap.put(authSource.toString(), authorization);
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 百度授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class BaiduAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getBaiduAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* Coding授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class CodingAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getCodingAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* CSDN授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class CsdnAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getCsdnAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 钉钉授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class DingTalkAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getDingTalkQrConnectUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 抖音授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class DouyinAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getDouyinAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* Facebook授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.3
* @since 1.3
*/
public class FacebookAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getFacebookAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 码云授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class GiteeAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getGiteeAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* Github授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class GithubAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getGithubAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* Google授权
*
* @author yangkai.shen (https://xkcoding.com)
* @version 1.3
* @since 1.3
*/
public class GoogleAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getGoogleAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 领英授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class LinkedinAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getLinkedinAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 小米授权
*
* @author yangkai.shen (https://xkcoding.com)
* @version 1.5
* @since 1.5
*/
public class MiAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getMiAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 微软授权
*
* @author yangkai.shen (https://xkcoding.com)
* @version 1.5
* @since 1.5
*/
public class MicrosoftAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getMicrosoftAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 开源中国授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class OschinaAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getOschinaAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* QQ授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class QqAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getQqAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 淘宝授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class TaobaoAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getTaobaoAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 腾讯云授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class TencentCloudAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getTencentCloudAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 今日头条授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class ToutiaoAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getToutiaoAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 微信授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class WeChatAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getWeChatAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.authorization;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.utils.UrlBuilder;
/**
* 微博授权
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public class WeiboAuthorization implements Authorization {
@Override
public String getAuthorizeUrl(AuthConfig config) {
return UrlBuilder.getWeiboAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
}
package me.zhyd.oauth.consts; package me.zhyd.oauth.config;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.request.ResponseStatus; import me.zhyd.oauth.request.ResponseStatus;
...@@ -10,7 +10,7 @@ import me.zhyd.oauth.request.ResponseStatus; ...@@ -10,7 +10,7 @@ import me.zhyd.oauth.request.ResponseStatus;
* @version 1.0 * @version 1.0
* @since 1.0 * @since 1.0
*/ */
public enum ApiUrl { public enum AuthSource {
/** /**
* Github * Github
*/ */
...@@ -29,16 +29,6 @@ public enum ApiUrl { ...@@ -29,16 +29,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://api.github.com/user"; return "https://api.github.com/user";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 新浪微博 * 新浪微博
...@@ -58,16 +48,6 @@ public enum ApiUrl { ...@@ -58,16 +48,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://api.weibo.com/2/users/show.json"; return "https://api.weibo.com/2/users/show.json";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* gitee * gitee
...@@ -87,16 +67,6 @@ public enum ApiUrl { ...@@ -87,16 +67,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://gitee.com/api/v5/user"; return "https://gitee.com/api/v5/user";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 钉钉 * 钉钉
...@@ -116,16 +86,6 @@ public enum ApiUrl { ...@@ -116,16 +86,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://oapi.dingtalk.com/sns/getuserinfo_bycode"; return "https://oapi.dingtalk.com/sns/getuserinfo_bycode";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 百度 * 百度
...@@ -150,11 +110,6 @@ public enum ApiUrl { ...@@ -150,11 +110,6 @@ public enum ApiUrl {
public String revoke() { public String revoke() {
return "https://openapi.baidu.com/rest/2.0/passport/auth/revokeAuthorization"; return "https://openapi.baidu.com/rest/2.0/passport/auth/revokeAuthorization";
} }
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* csdn * csdn
...@@ -174,16 +129,6 @@ public enum ApiUrl { ...@@ -174,16 +129,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://api.csdn.net/user/getinfo"; return "https://api.csdn.net/user/getinfo";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* Coding * Coding
...@@ -203,21 +148,11 @@ public enum ApiUrl { ...@@ -203,21 +148,11 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://coding.net/api/account/current_user"; return "https://coding.net/api/account/current_user";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 腾讯云开发者平台(coding升级后就变成腾讯云开发者平台了) * 腾讯云开发者平台(coding升级后就变成腾讯云开发者平台了)
*/ */
TENCENTCLOUD { TENCENT_CLOUD {
@Override @Override
public String authorize() { public String authorize() {
return "https://dev.tencent.com/oauth_authorize.html"; return "https://dev.tencent.com/oauth_authorize.html";
...@@ -232,16 +167,6 @@ public enum ApiUrl { ...@@ -232,16 +167,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://dev.tencent.com/api/account/current_user"; return "https://dev.tencent.com/api/account/current_user";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* oschina 开源中国 * oschina 开源中国
...@@ -261,16 +186,6 @@ public enum ApiUrl { ...@@ -261,16 +186,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://www.oschina.net/action/openapi/user"; return "https://www.oschina.net/action/openapi/user";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 支付宝 * 支付宝
...@@ -290,16 +205,6 @@ public enum ApiUrl { ...@@ -290,16 +205,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://openapi.alipay.com/gateway.do"; return "https://openapi.alipay.com/gateway.do";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* QQ * QQ
...@@ -319,16 +224,6 @@ public enum ApiUrl { ...@@ -319,16 +224,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://graph.qq.com/user/get_user_info"; return "https://graph.qq.com/user/get_user_info";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 微信 * 微信
...@@ -349,11 +244,6 @@ public enum ApiUrl { ...@@ -349,11 +244,6 @@ public enum ApiUrl {
return "https://api.weixin.qq.com/sns/userinfo"; return "https://api.weixin.qq.com/sns/userinfo";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override @Override
public String refresh() { public String refresh() {
return "https://api.weixin.qq.com/sns/oauth2/refresh_token"; return "https://api.weixin.qq.com/sns/oauth2/refresh_token";
...@@ -377,16 +267,6 @@ public enum ApiUrl { ...@@ -377,16 +267,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
throw new AuthException(ResponseStatus.UNSUPPORTED); throw new AuthException(ResponseStatus.UNSUPPORTED);
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* Google * Google
...@@ -406,16 +286,6 @@ public enum ApiUrl { ...@@ -406,16 +286,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://oauth2.googleapis.com/tokeninfo"; return "https://oauth2.googleapis.com/tokeninfo";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* Facebook * Facebook
...@@ -435,16 +305,6 @@ public enum ApiUrl { ...@@ -435,16 +305,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://graph.facebook.com/v3.3/me"; return "https://graph.facebook.com/v3.3/me";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}, },
/** /**
* 抖音 * 抖音
...@@ -465,11 +325,6 @@ public enum ApiUrl { ...@@ -465,11 +325,6 @@ public enum ApiUrl {
return "https://open.douyin.com/oauth/userinfo"; return "https://open.douyin.com/oauth/userinfo";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override @Override
public String refresh() { public String refresh() {
return "https://open.douyin.com/oauth/refresh_token"; return "https://open.douyin.com/oauth/refresh_token";
...@@ -494,11 +349,6 @@ public enum ApiUrl { ...@@ -494,11 +349,6 @@ public enum ApiUrl {
return "https://api.linkedin.com/v2/me"; return "https://api.linkedin.com/v2/me";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override @Override
public String refresh() { public String refresh() {
return "https://www.linkedin.com/oauth/v2/accessToken"; return "https://www.linkedin.com/oauth/v2/accessToken";
...@@ -523,11 +373,6 @@ public enum ApiUrl { ...@@ -523,11 +373,6 @@ public enum ApiUrl {
return "https://graph.microsoft.com/v1.0/me"; return "https://graph.microsoft.com/v1.0/me";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override @Override
public String refresh() { public String refresh() {
return "https://login.microsoftonline.com/common/oauth2/v2.0/token"; return "https://login.microsoftonline.com/common/oauth2/v2.0/token";
...@@ -552,11 +397,6 @@ public enum ApiUrl { ...@@ -552,11 +397,6 @@ public enum ApiUrl {
return "https://open.account.xiaomi.com/user/profile"; return "https://open.account.xiaomi.com/user/profile";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override @Override
public String refresh() { public String refresh() {
return "https://account.xiaomi.com/oauth2/token"; return "https://account.xiaomi.com/oauth2/token";
...@@ -580,16 +420,6 @@ public enum ApiUrl { ...@@ -580,16 +420,6 @@ public enum ApiUrl {
public String userInfo() { public String userInfo() {
return "https://open.snssdk.com/data/user_profile"; return "https://open.snssdk.com/data/user_profile";
} }
@Override
public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
@Override
public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
}; };
/** /**
...@@ -618,13 +448,17 @@ public enum ApiUrl { ...@@ -618,13 +448,17 @@ public enum ApiUrl {
* *
* @return url * @return url
*/ */
public abstract String revoke(); public String revoke() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
/** /**
* 刷新授权的api * 刷新授权的api
* *
* @return url * @return url
*/ */
public abstract String refresh(); public String refresh() {
throw new AuthException(ResponseStatus.UNSUPPORTED);
}
} }
\ No newline at end of file
package me.zhyd.oauth.model;
/**
* 授权来源(平台)
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public enum AuthSource {
GITHUB,
GITEE,
WEIBO,
DINGTALK,
BAIDU,
CSDN,
CODING,
OSCHINA,
TENCENT_CLOUD,
ALIPAY,
TAOBAO,
QQ,
WECHAT,
GOOGLE,
FACEBOOK,
DOUYIN,
LINKEDIN,
MICROSOFT,
MI,
TOUTIAO
}
...@@ -2,6 +2,7 @@ package me.zhyd.oauth.model; ...@@ -2,6 +2,7 @@ package me.zhyd.oauth.model;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import me.zhyd.oauth.config.AuthSource;
/** /**
* 授权成功后的用户信息,根据授权平台的不同,获取的数据完整性也不同 * 授权成功后的用户信息,根据授权平台的不同,获取的数据完整性也不同
......
...@@ -8,13 +8,13 @@ import com.alipay.api.request.AlipayUserInfoShareRequest; ...@@ -8,13 +8,13 @@ import com.alipay.api.request.AlipayUserInfoShareRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserInfoShareResponse;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.consts.ApiUrl; import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.StringUtils;
import me.zhyd.oauth.utils.UrlBuilder;
/** /**
* 支付宝登录 * 支付宝登录
...@@ -29,7 +29,8 @@ public class AuthAlipayRequest extends BaseAuthRequest { ...@@ -29,7 +29,8 @@ public class AuthAlipayRequest extends BaseAuthRequest {
public AuthAlipayRequest(AuthConfig config) { public AuthAlipayRequest(AuthConfig config) {
super(config, AuthSource.ALIPAY); super(config, AuthSource.ALIPAY);
this.alipayClient = new DefaultAlipayClient(ApiUrl.ALIPAY.accessToken(), config.getClientId(), config.getClientSecret(), "json", "UTF-8", config.getAlipayPublicKey(), "RSA2"); this.alipayClient = new DefaultAlipayClient(AuthSource.ALIPAY.accessToken(), config.getClientId(), config.getClientSecret(), "json", "UTF-8", config
.getAlipayPublicKey(), "RSA2");
} }
@Override @Override
...@@ -67,8 +68,7 @@ public class AuthAlipayRequest extends BaseAuthRequest { ...@@ -67,8 +68,7 @@ public class AuthAlipayRequest extends BaseAuthRequest {
if (!response.isSuccess()) { if (!response.isSuccess()) {
throw new AuthException(response.getSubMsg()); throw new AuthException(response.getSubMsg());
} }
String province = response.getProvince(), String province = response.getProvince(), city = response.getCity();
city = response.getCity();
return AuthUser.builder() return AuthUser.builder()
.uuid(response.getUserId()) .uuid(response.getUserId())
.username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName()) .username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName())
...@@ -80,4 +80,14 @@ public class AuthAlipayRequest extends BaseAuthRequest { ...@@ -80,4 +80,14 @@ public class AuthAlipayRequest extends BaseAuthRequest {
.source(AuthSource.ALIPAY) .source(AuthSource.ALIPAY)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getAlipayAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -3,8 +3,8 @@ package me.zhyd.oauth.request; ...@@ -3,8 +3,8 @@ package me.zhyd.oauth.request;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.*; import me.zhyd.oauth.model.*;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -24,16 +24,15 @@ public class AuthBaiduRequest extends BaseAuthRequest { ...@@ -24,16 +24,15 @@ public class AuthBaiduRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getBaiduAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getBaiduAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
JSONObject accessTokenObject = JSONObject.parseObject(response.body()); JSONObject accessTokenObject = JSONObject.parseObject(response.body());
AuthBaiduErrorCode errorCode = AuthBaiduErrorCode.getErrorCode(accessTokenObject.getString("error")); AuthBaiduErrorCode errorCode = AuthBaiduErrorCode.getErrorCode(accessTokenObject.getString("error"));
if (!AuthBaiduErrorCode.OK.equals(errorCode)) { if (!AuthBaiduErrorCode.OK.equals(errorCode)) {
throw new AuthException(errorCode.getDesc()); throw new AuthException(errorCode.getDesc());
} }
return AuthToken.builder() return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build();
.accessToken(accessTokenObject.getString("access_token"))
.build();
} }
@Override @Override
...@@ -56,13 +55,23 @@ public class AuthBaiduRequest extends BaseAuthRequest { ...@@ -56,13 +55,23 @@ public class AuthBaiduRequest extends BaseAuthRequest {
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getBaiduAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
@Override @Override
public AuthResponse revoke(AuthToken authToken) { public AuthResponse revoke(AuthToken authToken) {
String accessToken = authToken.getAccessToken(); String accessToken = authToken.getAccessToken();
HttpResponse response = HttpRequest.get(UrlBuilder.getBaiduRevokeUrl(accessToken)).execute(); HttpResponse response = HttpRequest.get(UrlBuilder.getBaiduRevokeUrl(accessToken)).execute();
String userInfo = response.body(); String userInfo = response.body();
JSONObject object = JSONObject.parseObject(userInfo); JSONObject object = JSONObject.parseObject(userInfo);
if(object.containsKey("error_code")) { if (object.containsKey("error_code")) {
return AuthResponse.builder() return AuthResponse.builder()
.code(ResponseStatus.FAILURE.getCode()) .code(ResponseStatus.FAILURE.getCode())
.msg(object.getString("error_msg")) .msg(object.getString("error_msg"))
......
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -32,9 +32,7 @@ public class AuthCodingRequest extends BaseAuthRequest { ...@@ -32,9 +32,7 @@ public class AuthCodingRequest extends BaseAuthRequest {
if (accessTokenObject.getIntValue("code") != 0) { if (accessTokenObject.getIntValue("code") != 0) {
throw new AuthException("Unable to get token from coding using code [" + code + "]"); throw new AuthException("Unable to get token from coding using code [" + code + "]");
} }
return AuthToken.builder() return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build();
.accessToken(accessTokenObject.getString("access_token"))
.build();
} }
@Override @Override
...@@ -61,4 +59,14 @@ public class AuthCodingRequest extends BaseAuthRequest { ...@@ -61,4 +59,14 @@ public class AuthCodingRequest extends BaseAuthRequest {
.source(AuthSource.CODING) .source(AuthSource.CODING)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getCodingAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -25,15 +25,14 @@ public class AuthCsdnRequest extends BaseAuthRequest { ...@@ -25,15 +25,14 @@ public class AuthCsdnRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getCsdnAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getCsdnAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
JSONObject accessTokenObject = JSONObject.parseObject(response.body()); JSONObject accessTokenObject = JSONObject.parseObject(response.body());
if (accessTokenObject.containsKey("error_code")) { if (accessTokenObject.containsKey("error_code")) {
throw new AuthException("Unable to get token from csdn using code [" + code + "]"); throw new AuthException("Unable to get token from csdn using code [" + code + "]");
} }
return AuthToken.builder() return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build();
.accessToken(accessTokenObject.getString("access_token"))
.build();
} }
@Override @Override
...@@ -53,4 +52,14 @@ public class AuthCsdnRequest extends BaseAuthRequest { ...@@ -53,4 +52,14 @@ public class AuthCsdnRequest extends BaseAuthRequest {
.source(AuthSource.CSDN) .source(AuthSource.CSDN)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getCsdnAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,9 +4,9 @@ import cn.hutool.http.HttpRequest; ...@@ -4,9 +4,9 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthDingTalkErrorCode; import me.zhyd.oauth.model.AuthDingTalkErrorCode;
import me.zhyd.oauth.model.AuthSource;
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.GlobalAuthUtil; import me.zhyd.oauth.utils.GlobalAuthUtil;
...@@ -29,9 +29,7 @@ public class AuthDingTalkRequest extends BaseAuthRequest { ...@@ -29,9 +29,7 @@ public class AuthDingTalkRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
return AuthToken.builder() return AuthToken.builder().accessCode(code).build();
.accessCode(code)
.build();
} }
@Override @Override
...@@ -40,9 +38,8 @@ public class AuthDingTalkRequest extends BaseAuthRequest { ...@@ -40,9 +38,8 @@ public class AuthDingTalkRequest extends BaseAuthRequest {
// 根据timestamp, appSecret计算签名值 // 根据timestamp, appSecret计算签名值
String stringToSign = System.currentTimeMillis() + ""; String stringToSign = System.currentTimeMillis() + "";
String urlEncodeSignature = GlobalAuthUtil.generateDingTalkSignature(config.getClientSecret(), stringToSign); String urlEncodeSignature = GlobalAuthUtil.generateDingTalkSignature(config.getClientSecret(), stringToSign);
HttpResponse response = HttpRequest.post(UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, stringToSign, config.getClientId())) HttpResponse response = HttpRequest.post(UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, stringToSign, config
.body(Objects.requireNonNull(new JSONObject().put("tmp_auth_code", code))) .getClientId())).body(Objects.requireNonNull(new JSONObject().put("tmp_auth_code", code))).execute();
.execute();
String userInfo = response.body(); String userInfo = response.body();
JSONObject object = new JSONObject(userInfo); JSONObject object = new JSONObject(userInfo);
AuthDingTalkErrorCode errorCode = AuthDingTalkErrorCode.getErrorCode(object.getInt("errcode")); AuthDingTalkErrorCode errorCode = AuthDingTalkErrorCode.getErrorCode(object.getInt("errcode"));
...@@ -57,4 +54,14 @@ public class AuthDingTalkRequest extends BaseAuthRequest { ...@@ -57,4 +54,14 @@ public class AuthDingTalkRequest extends BaseAuthRequest {
.source(AuthSource.DINGTALK) .source(AuthSource.DINGTALK)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getDingTalkQrConnectUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,9 +4,9 @@ import cn.hutool.http.HttpRequest; ...@@ -4,9 +4,9 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthSource;
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.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -50,6 +50,16 @@ public class AuthDouyinRequest extends BaseAuthRequest { ...@@ -50,6 +50,16 @@ public class AuthDouyinRequest extends BaseAuthRequest {
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getDouyinAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse refresh(AuthToken oldToken) {
String refreshTokenUrl = UrlBuilder.getDouyinRefreshUrl(config.getClientId(), oldToken.getRefreshToken()); String refreshTokenUrl = UrlBuilder.getDouyinRefreshUrl(config.getClientId(), oldToken.getRefreshToken());
......
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -26,7 +26,8 @@ public class AuthFacebookRequest extends BaseAuthRequest { ...@@ -26,7 +26,8 @@ public class AuthFacebookRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getFacebookAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getFacebookAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
JSONObject object = JSONObject.parseObject(response.body()); JSONObject object = JSONObject.parseObject(response.body());
...@@ -70,4 +71,14 @@ public class AuthFacebookRequest extends BaseAuthRequest { ...@@ -70,4 +71,14 @@ public class AuthFacebookRequest extends BaseAuthRequest {
.source(AuthSource.FACEBOOK) .source(AuthSource.FACEBOOK)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getFacebookAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -25,15 +25,14 @@ public class AuthGiteeRequest extends BaseAuthRequest { ...@@ -25,15 +25,14 @@ public class AuthGiteeRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getGiteeAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getGiteeAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
JSONObject accessTokenObject = JSONObject.parseObject(response.body()); JSONObject accessTokenObject = JSONObject.parseObject(response.body());
if (accessTokenObject.containsKey("error")) { if (accessTokenObject.containsKey("error")) {
throw new AuthException("Unable to get token from gitee using code [" + code + "]"); throw new AuthException("Unable to get token from gitee using code [" + code + "]");
} }
return AuthToken.builder() return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build();
.accessToken(accessTokenObject.getString("access_token"))
.build();
} }
@Override @Override
...@@ -56,4 +55,14 @@ public class AuthGiteeRequest extends BaseAuthRequest { ...@@ -56,4 +55,14 @@ public class AuthGiteeRequest extends BaseAuthRequest {
.source(AuthSource.GITEE) .source(AuthSource.GITEE)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getGiteeAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.GlobalAuthUtil; import me.zhyd.oauth.utils.GlobalAuthUtil;
...@@ -28,15 +28,14 @@ public class AuthGithubRequest extends BaseAuthRequest { ...@@ -28,15 +28,14 @@ public class AuthGithubRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getGithubAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getGithubAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
Map<String, String> res = GlobalAuthUtil.parseStringToMap(response.body()); Map<String, String> res = GlobalAuthUtil.parseStringToMap(response.body());
if (res.containsKey("error")) { if (res.containsKey("error")) {
throw new AuthException(res.get("error") + ":" + res.get("error_description")); throw new AuthException(res.get("error") + ":" + res.get("error_description"));
} }
return AuthToken.builder() return AuthToken.builder().accessToken(res.get("access_token")).build();
.accessToken(res.get("access_token"))
.build();
} }
@Override @Override
...@@ -59,4 +58,14 @@ public class AuthGithubRequest extends BaseAuthRequest { ...@@ -59,4 +58,14 @@ public class AuthGithubRequest extends BaseAuthRequest {
.source(AuthSource.GITHUB) .source(AuthSource.GITHUB)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getGithubAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -61,4 +61,14 @@ public class AuthGoogleRequest extends BaseAuthRequest { ...@@ -61,4 +61,14 @@ public class AuthGoogleRequest extends BaseAuthRequest {
.source(AuthSource.GOOGLE) .source(AuthSource.GOOGLE)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getGoogleAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -5,9 +5,9 @@ import cn.hutool.http.HttpResponse; ...@@ -5,9 +5,9 @@ import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthSource;
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.StringUtils; import me.zhyd.oauth.utils.StringUtils;
...@@ -29,7 +29,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest { ...@@ -29,7 +29,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getLinkedinAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getLinkedinAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
return this.getToken(accessTokenUrl); return this.getToken(accessTokenUrl);
} }
...@@ -65,7 +66,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest { ...@@ -65,7 +66,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest {
String avatar = null; String avatar = null;
JSONObject profilePictureObject = userInfoObject.getJSONObject("profilePicture"); JSONObject profilePictureObject = userInfoObject.getJSONObject("profilePicture");
if (profilePictureObject.containsKey("displayImage~")) { if (profilePictureObject.containsKey("displayImage~")) {
JSONArray displayImageElements = profilePictureObject.getJSONObject("displayImage~").getJSONArray("elements"); JSONArray displayImageElements = profilePictureObject.getJSONObject("displayImage~")
.getJSONArray("elements");
if (null != displayImageElements && displayImageElements.size() > 0) { if (null != displayImageElements && displayImageElements.size() > 0) {
JSONObject largestImageObj = displayImageElements.getJSONObject(displayImageElements.size() - 1); JSONObject largestImageObj = displayImageElements.getJSONObject(displayImageElements.size() - 1);
avatar = largestImageObj.getJSONArray("identifiers").getJSONObject(0).getString("identifier"); avatar = largestImageObj.getJSONArray("identifiers").getJSONObject(0).getString("identifier");
...@@ -85,6 +87,16 @@ public class AuthLinkedinRequest extends BaseAuthRequest { ...@@ -85,6 +87,16 @@ public class AuthLinkedinRequest extends BaseAuthRequest {
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getLinkedinAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
private String getUserEmail(String accessToken) { private String getUserEmail(String accessToken) {
String email = null; String email = null;
HttpResponse emailResponse = HttpRequest.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))") HttpResponse emailResponse = HttpRequest.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))")
...@@ -95,7 +107,10 @@ public class AuthLinkedinRequest extends BaseAuthRequest { ...@@ -95,7 +107,10 @@ public class AuthLinkedinRequest extends BaseAuthRequest {
System.out.println(emailResponse.body()); System.out.println(emailResponse.body());
JSONObject emailObj = JSONObject.parseObject(emailResponse.body()); JSONObject emailObj = JSONObject.parseObject(emailResponse.body());
if (emailObj.containsKey("elements")) { if (emailObj.containsKey("elements")) {
email = emailObj.getJSONArray("elements").getJSONObject(0).getJSONObject("handle~").getString("emailAddress"); email = emailObj.getJSONArray("elements")
.getJSONObject(0)
.getJSONObject("handle~")
.getString("emailAddress");
} }
return email; return email;
} }
...@@ -114,7 +129,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest { ...@@ -114,7 +129,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest {
if (StringUtils.isEmpty(oldToken.getRefreshToken())) { if (StringUtils.isEmpty(oldToken.getRefreshToken())) {
throw new AuthException(ResponseStatus.UNSUPPORTED); throw new AuthException(ResponseStatus.UNSUPPORTED);
} }
String refreshTokenUrl = UrlBuilder.getLinkedinRefreshUrl(config.getClientId(), config.getClientSecret(), oldToken.getRefreshToken()); String refreshTokenUrl = UrlBuilder.getLinkedinRefreshUrl(config.getClientId(), config.getClientSecret(), oldToken
.getRefreshToken());
return AuthResponse.builder() return AuthResponse.builder()
.code(ResponseStatus.SUCCESS.getCode()) .code(ResponseStatus.SUCCESS.getCode())
.data(this.getToken(refreshTokenUrl)) .data(this.getToken(refreshTokenUrl))
......
...@@ -5,9 +5,9 @@ import cn.hutool.http.HttpRequest; ...@@ -5,9 +5,9 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthSource;
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.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -92,6 +92,16 @@ public class AuthMiRequest extends BaseAuthRequest { ...@@ -92,6 +92,16 @@ public class AuthMiRequest extends BaseAuthRequest {
return authUser; return authUser;
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getMiAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
/** /**
* 刷新access token (续期) * 刷新access token (续期)
* *
......
...@@ -5,9 +5,9 @@ import cn.hutool.http.HttpResponse; ...@@ -5,9 +5,9 @@ import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthSource;
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.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -90,6 +90,16 @@ public class AuthMicrosoftRequest extends BaseAuthRequest { ...@@ -90,6 +90,16 @@ public class AuthMicrosoftRequest extends BaseAuthRequest {
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getMicrosoftAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
/** /**
* 刷新access token (续期) * 刷新access token (续期)
* *
......
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -26,15 +26,14 @@ public class AuthOschinaRequest extends BaseAuthRequest { ...@@ -26,15 +26,14 @@ public class AuthOschinaRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getOschinaAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getOschinaAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
JSONObject accessTokenObject = JSONObject.parseObject(response.body()); JSONObject accessTokenObject = JSONObject.parseObject(response.body());
if (accessTokenObject.containsKey("error")) { if (accessTokenObject.containsKey("error")) {
throw new AuthException("Unable to get token from oschina using code [" + code + "]"); throw new AuthException("Unable to get token from oschina using code [" + code + "]");
} }
return AuthToken.builder() return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build();
.accessToken(accessTokenObject.getString("access_token"))
.build();
} }
@Override @Override
...@@ -58,4 +57,14 @@ public class AuthOschinaRequest extends BaseAuthRequest { ...@@ -58,4 +57,14 @@ public class AuthOschinaRequest extends BaseAuthRequest {
.source(AuthSource.OSCHINA) .source(AuthSource.OSCHINA)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getOschinaAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -5,8 +5,8 @@ import cn.hutool.http.HttpRequest; ...@@ -5,8 +5,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -71,6 +71,16 @@ public class AuthQqRequest extends BaseAuthRequest { ...@@ -71,6 +71,16 @@ public class AuthQqRequest extends BaseAuthRequest {
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getQqAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
private String getOpenId(String accessToken) { private String getOpenId(String accessToken) {
HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken)) HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken))
.execute(); .execute();
......
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -27,15 +27,14 @@ public class AuthTaobaoRequest extends BaseAuthRequest { ...@@ -27,15 +27,14 @@ public class AuthTaobaoRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
return AuthToken.builder() return AuthToken.builder().accessCode(code).build();
.accessCode(code)
.build();
} }
@Override @Override
protected AuthUser getUserInfo(AuthToken authToken) { protected AuthUser getUserInfo(AuthToken authToken) {
String accessCode = authToken.getAccessCode(); String accessCode = authToken.getAccessCode();
HttpResponse response = HttpRequest.post(UrlBuilder.getTaobaoAccessTokenUrl(this.config.getClientId(), this.config.getClientSecret(), accessCode, this.config.getRedirectUri())).execute(); HttpResponse response = HttpRequest.post(UrlBuilder.getTaobaoAccessTokenUrl(this.config.getClientId(), this.config
.getClientSecret(), accessCode, this.config.getRedirectUri())).execute();
JSONObject object = JSONObject.parseObject(response.body()); JSONObject object = JSONObject.parseObject(response.body());
if (object.containsKey("error")) { if (object.containsKey("error")) {
throw new AuthException(ResponseStatus.FAILURE + ":" + object.getString("error_description")); throw new AuthException(ResponseStatus.FAILURE + ":" + object.getString("error_description"));
...@@ -56,4 +55,14 @@ public class AuthTaobaoRequest extends BaseAuthRequest { ...@@ -56,4 +55,14 @@ public class AuthTaobaoRequest extends BaseAuthRequest {
.source(AuthSource.TAOBAO) .source(AuthSource.TAOBAO)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getTaobaoAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -32,9 +32,7 @@ public class AuthTencentCloudRequest extends BaseAuthRequest { ...@@ -32,9 +32,7 @@ public class AuthTencentCloudRequest extends BaseAuthRequest {
if (object.getIntValue("code") != 0) { if (object.getIntValue("code") != 0) {
throw new AuthException("Unable to get token from tencent cloud using code [" + code + "]: " + object.get("msg")); throw new AuthException("Unable to get token from tencent cloud using code [" + code + "]: " + object.get("msg"));
} }
return AuthToken.builder() return AuthToken.builder().accessToken(object.getString("access_token")).build();
.accessToken(object.getString("access_token"))
.build();
} }
@Override @Override
...@@ -61,4 +59,14 @@ public class AuthTencentCloudRequest extends BaseAuthRequest { ...@@ -61,4 +59,14 @@ public class AuthTencentCloudRequest extends BaseAuthRequest {
.source(AuthSource.TENCENT_CLOUD) .source(AuthSource.TENCENT_CLOUD)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getTencentCloudAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,6 +4,7 @@ import cn.hutool.http.HttpRequest; ...@@ -4,6 +4,7 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.*; import me.zhyd.oauth.model.*;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
...@@ -64,4 +65,14 @@ public class AuthToutiaoRequest extends BaseAuthRequest { ...@@ -64,4 +65,14 @@ public class AuthToutiaoRequest extends BaseAuthRequest {
.source(AuthSource.TOUTIAO) .source(AuthSource.TOUTIAO)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getToutiaoAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
...@@ -4,8 +4,12 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,12 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.*; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.model.AuthUserGender;
import me.zhyd.oauth.utils.UrlBuilder; import me.zhyd.oauth.utils.UrlBuilder;
/** /**
...@@ -54,6 +58,16 @@ public class AuthWeChatRequest extends BaseAuthRequest { ...@@ -54,6 +58,16 @@ public class AuthWeChatRequest extends BaseAuthRequest {
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getWeChatAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse refresh(AuthToken oldToken) {
String refreshTokenUrl = UrlBuilder.getWeChatRefreshUrl(config.getClientId(), oldToken.getRefreshToken()); String refreshTokenUrl = UrlBuilder.getWeChatRefreshUrl(config.getClientId(), oldToken.getRefreshToken());
...@@ -73,6 +87,7 @@ public class AuthWeChatRequest extends BaseAuthRequest { ...@@ -73,6 +87,7 @@ public class AuthWeChatRequest extends BaseAuthRequest {
throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg")); throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg"));
} }
} }
/** /**
* 获取token,适用于获取access_token和刷新token * 获取token,适用于获取access_token和刷新token
* *
......
...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; ...@@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthSource;
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.model.AuthUserGender; import me.zhyd.oauth.model.AuthUserGender;
...@@ -29,7 +29,8 @@ public class AuthWeiboRequest extends BaseAuthRequest { ...@@ -29,7 +29,8 @@ public class AuthWeiboRequest extends BaseAuthRequest {
@Override @Override
protected AuthToken getAccessToken(String code) { protected AuthToken getAccessToken(String code) {
String accessTokenUrl = UrlBuilder.getWeiboAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); String accessTokenUrl = UrlBuilder.getWeiboAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config
.getRedirectUri());
HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); HttpResponse response = HttpRequest.post(accessTokenUrl).execute();
String accessTokenStr = response.body(); String accessTokenStr = response.body();
JSONObject accessTokenObject = JSONObject.parseObject(accessTokenStr); JSONObject accessTokenObject = JSONObject.parseObject(accessTokenStr);
...@@ -61,7 +62,8 @@ public class AuthWeiboRequest extends BaseAuthRequest { ...@@ -61,7 +62,8 @@ public class AuthWeiboRequest extends BaseAuthRequest {
.uuid(object.getString("id")) .uuid(object.getString("id"))
.username(object.getString("name")) .username(object.getString("name"))
.avatar(object.getString("profile_image_url")) .avatar(object.getString("profile_image_url"))
.blog(StringUtils.isEmpty(object.getString("url")) ? "https://weibo.com/" + object.getString("profile_url") : object.getString("url")) .blog(StringUtils.isEmpty(object.getString("url")) ? "https://weibo.com/" + object.getString("profile_url") : object
.getString("url"))
.nickname(object.getString("screen_name")) .nickname(object.getString("screen_name"))
.location(object.getString("location")) .location(object.getString("location"))
.remark(object.getString("description")) .remark(object.getString("description"))
...@@ -70,4 +72,14 @@ public class AuthWeiboRequest extends BaseAuthRequest { ...@@ -70,4 +72,14 @@ public class AuthWeiboRequest extends BaseAuthRequest {
.source(AuthSource.WEIBO) .source(AuthSource.WEIBO)
.build(); .build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override
public String authorize() {
return UrlBuilder.getWeiboAuthorizeUrl(config.getClientId(), config.getRedirectUri());
}
} }
package me.zhyd.oauth.request; package me.zhyd.oauth.request;
import lombok.Data; import lombok.Data;
import me.zhyd.oauth.authorization.AuthorizationFactory;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthSource;
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.AuthConfigChecker; import me.zhyd.oauth.utils.AuthConfigChecker;
...@@ -51,8 +50,11 @@ public abstract class BaseAuthRequest implements AuthRequest { ...@@ -51,8 +50,11 @@ public abstract class BaseAuthRequest implements AuthRequest {
return AuthResponse.builder().code(errorCode).msg(e.getMessage()).build(); return AuthResponse.builder().code(errorCode).msg(e.getMessage()).build();
} }
/**
* 返回认证url,可自行跳转页面
*
* @return 返回授权地址
*/
@Override @Override
public String authorize() { public abstract String authorize();
return AuthorizationFactory.getAuthorize(source).getAuthorizeUrl(config);
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册