Package org.aoju.bus.oauth.provider
Class AbstractProvider
java.lang.Object
org.aoju.bus.oauth.provider.AbstractProvider
- All Implemented Interfaces:
Provider
- Direct Known Subclasses:
AlipayProvider,AliyunProvider,AmazonProvider,BaiduProvider,CodingProvider,DingTalkProvider,DouyinProvider,ElemeProvider,FacebookProvider,FeishuProvider,GiteeProvider,GithubProvider,GitlabProvider,GoogleProvider,HuaweiProvider,JdProvider,KujialeProvider,LineProvider,LinkedinProvider,MeituanProvider,MicrosoftProvider,OschinaProvider,PinterestProvider,QqProvider,SlackProvider,StackOverflowProvider,TaobaoProvider,TeambitionProvider,TencentProvider,ToutiaoProvider,TwitterProvider,WeChatEEProvider,WeChatMaProvider,WeChatMpProvider,WeChatOPProvider,WeiboProvider,XiaomiProvider,XmlyProvider
默认的request处理类
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionorg.aoju.bus.cache.metric.ExtendCache -
Constructor Summary
ConstructorsConstructorDescriptionAbstractProvider(Context context, Complex source) AbstractProvider(Context context, Complex source, org.aoju.bus.cache.metric.ExtendCache extendCache) -
Method Summary
Modifier and TypeMethodDescriptionprotected StringaccessTokenUrl(String code) 返回获取accessToken的url返回带state参数的授权url,授权回调时会带上这个statestatic void校验回调传回的codev1.10.0版本中改为传入source和callback,对于不同平台使用不同参数接受code的情况统一做处理static voidcheckContext(Context context, Complex complex) 检查配置合法性 针对部分平台, 对redirect uri有特定要求 一般来说redirect uri都是http://,而对于facebook平台, redirect uri 必须是https的链接static voidcheckState(String state, Complex complex, org.aoju.bus.cache.metric.ExtendCache oauthCache) 校验回调传回的state,为空或者不存在state不存在的情况只有两种: 1.doGetAuthorizationCode(String code) 通用的 authorizationCode 协议protected StringdoGetRevoke(AccToken accToken) 通用的post形式的取消授权方法protected StringdoGetUserInfo(AccToken accToken) 通用的 用户信息protected String通用的 authorizationCode 协议protected abstract AccTokengetAccessToken(Callback Callback) 获取access tokenprotected StringgetRealState(String state) 获取state,如果为空, 则默认取当前日期的时间戳getScopes(boolean defaultScope, OauthScope.Scope... scopes) 从OauthScope.Scope数组中获取实际的 scope 字符串protected String获取以separator分割过后的 scope 信息protected abstract ObjectgetUserInfo(AccToken token) 使用token换取用户信息static boolean是否支持第三方登录统一的登录入口 当通过authorize(String)授权成功后,会跳转到调用方的相关回调方法中 方法的入参可以使用AuthCallback,AuthCallback类中封装好了OAuth2授权回调所需要的参数parseStringToMap(String text, boolean decode) 字符串转map,字符串格式为xxx=xxx&xxx=xxxprotected StringrefreshTokenUrl(String refreshToken) 返回获取accessToken的urlprotected String返回获取revoke authorization的urlstatic byte[]签名protected StringuserInfoUrl(AccToken accToken) 返回获取userInfo的url
-
Field Details
-
context
-
source
-
extendCache
public org.aoju.bus.cache.metric.ExtendCache extendCache
-
-
Constructor Details
-
AbstractProvider
-
AbstractProvider
-
-
Method Details
-
isSupport
是否支持第三方登录- Parameters:
context- 上下文信息complex- 当前授权平台- Returns:
- true or false
-
sign
签名- Parameters:
key- keydata- dataalgorithm- algorithm- Returns:
- byte[]
-
checkContext
检查配置合法性 针对部分平台, 对redirect uri有特定要求 一般来说redirect uri都是http://,而对于facebook平台, redirect uri 必须是https的链接- Parameters:
context- 上下文信息complex- 当前授权平台
-
checkCode
校验回调传回的codev1.10.0版本中改为传入source和callback,对于不同平台使用不同参数接受code的情况统一做处理- Parameters:
complex- 当前授权平台callback- 从第三方授权回调回来时传入的参数集合
-
checkState
public static void checkState(String state, Complex complex, org.aoju.bus.cache.metric.ExtendCache oauthCache) 校验回调传回的state,为空或者不存在state不存在的情况只有两种: 1.state已使用,被正常清除 2.state为前端伪造,本身就不存在- Parameters:
state- 一定不为空complex- 当前授权平台oauthCache- 缓存实现
-
getScopes
从OauthScope.Scope数组中获取实际的 scope 字符串- Parameters:
defaultScope- 默认参数scopes- 可变参数,支持传任意OauthScope.Scope- Returns:
- List
-
login
统一的登录入口 当通过authorize(String)授权成功后,会跳转到调用方的相关回调方法中 方法的入参可以使用AuthCallback,AuthCallback类中封装好了OAuth2授权回调所需要的参数 -
authorize
返回带state参数的授权url,授权回调时会带上这个state -
getAccessToken
获取access token- Parameters:
Callback- 授权成功后的回调参数- Returns:
- token
- See Also:
-
getUserInfo
使用token换取用户信息- Parameters:
token- token信息- Returns:
- 用户信息
- See Also:
-
accessTokenUrl
返回获取accessToken的url- Parameters:
code- 授权码- Returns:
- 返回获取accessToken的url
-
refreshTokenUrl
返回获取accessToken的url- Parameters:
refreshToken- refreshToken- Returns:
- 返回获取accessToken的url
-
userInfoUrl
返回获取userInfo的url- Parameters:
accToken- token- Returns:
- 返回获取userInfo的url
-
revokeUrl
返回获取revoke authorization的url- Parameters:
accToken- token- Returns:
- 返回获取revoke authorization的url
-
getRealState
获取state,如果为空, 则默认取当前日期的时间戳- Parameters:
state- 原始的state- Returns:
- 返回不为null的state
-
doPostAuthorizationCode
通用的 authorizationCode 协议- Parameters:
code- code码- Returns:
- HttpResponse
-
doGetAuthorizationCode
通用的 authorizationCode 协议- Parameters:
code- code码- Returns:
- HttpResponse
-
doGetUserInfo
通用的 用户信息- Parameters:
accToken- token封装- Returns:
- HttpResponse
-
doGetRevoke
通用的post形式的取消授权方法- Parameters:
accToken- token封装- Returns:
- HttpResponse
-
getScopes
获取以separator分割过后的 scope 信息- Parameters:
separator- 多个scope间的分隔符encode- 是否 encode 编码defaultScopes- 默认的 scope, 当客户端没有配置scopes时启用- Returns:
- String
-
parseStringToMap
字符串转map,字符串格式为xxx=xxx&xxx=xxx- Parameters:
text- 待转换的字符串decode- 是否解码- Returns:
- map
-