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

public abstract class AbstractProvider extends Object implements Provider
默认的request处理类
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • context

      public Context context
    • source

      public Complex source
    • extendCache

      public org.aoju.bus.cache.metric.ExtendCache extendCache
  • Constructor Details

    • AbstractProvider

      public AbstractProvider(Context context, Complex source)
    • AbstractProvider

      public AbstractProvider(Context context, Complex source, org.aoju.bus.cache.metric.ExtendCache extendCache)
  • Method Details

    • isSupport

      public static boolean isSupport(Context context, Complex complex)
      是否支持第三方登录
      Parameters:
      context - 上下文信息
      complex - 当前授权平台
      Returns:
      true or false
    • sign

      public static byte[] sign(byte[] key, byte[] data, String algorithm)
      签名
      Parameters:
      key - key
      data - data
      algorithm - algorithm
      Returns:
      byte[]
    • checkContext

      public static void checkContext(Context context, Complex complex)
      检查配置合法性 针对部分平台, 对redirect uri有特定要求 一般来说redirect uri都是http://,而对于facebook平台, redirect uri 必须是https的链接
      Parameters:
      context - 上下文信息
      complex - 当前授权平台
    • checkCode

      public static void checkCode(Complex complex, Callback callback)
      校验回调传回的code v1.10.0版本中改为传入sourcecallback,对于不同平台使用不同参数接受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

      public static List<String> getScopes(boolean defaultScope, OauthScope.Scope... scopes)
      OauthScope.Scope 数组中获取实际的 scope 字符串
      Parameters:
      defaultScope - 默认参数
      scopes - 可变参数,支持传任意 OauthScope.Scope
      Returns:
      List
    • login

      public Message login(Callback callback)
      统一的登录入口 当通过authorize(String)授权成功后,会跳转到调用方的相关回调方法中 方法的入参可以使用AuthCallback,AuthCallback类中封装好了OAuth2授权回调所需要的参数
      Specified by:
      login in interface Provider
      Parameters:
      callback - 用于接收回调参数的实体
      Returns:
      the Message
    • authorize

      public String authorize(String state)
      返回带state参数的授权url,授权回调时会带上这个state
      Specified by:
      authorize in interface Provider
      Parameters:
      state - state 验证授权流程的参数,可以防止csrf
      Returns:
      返回授权地址
    • getAccessToken

      protected abstract AccToken getAccessToken(Callback Callback)
      获取access token
      Parameters:
      Callback - 授权成功后的回调参数
      Returns:
      token
      See Also:
    • getUserInfo

      protected abstract Object getUserInfo(AccToken token)
      使用token换取用户信息
      Parameters:
      token - token信息
      Returns:
      用户信息
      See Also:
    • accessTokenUrl

      protected String accessTokenUrl(String code)
      返回获取accessToken的url
      Parameters:
      code - 授权码
      Returns:
      返回获取accessToken的url
    • refreshTokenUrl

      protected String refreshTokenUrl(String refreshToken)
      返回获取accessToken的url
      Parameters:
      refreshToken - refreshToken
      Returns:
      返回获取accessToken的url
    • userInfoUrl

      protected String userInfoUrl(AccToken accToken)
      返回获取userInfo的url
      Parameters:
      accToken - token
      Returns:
      返回获取userInfo的url
    • revokeUrl

      protected String revokeUrl(AccToken accToken)
      返回获取revoke authorization的url
      Parameters:
      accToken - token
      Returns:
      返回获取revoke authorization的url
    • getRealState

      protected String getRealState(String state)
      获取state,如果为空, 则默认取当前日期的时间戳
      Parameters:
      state - 原始的state
      Returns:
      返回不为null的state
    • doPostAuthorizationCode

      protected String doPostAuthorizationCode(String code)
      通用的 authorizationCode 协议
      Parameters:
      code - code码
      Returns:
      HttpResponse
    • doGetAuthorizationCode

      public String doGetAuthorizationCode(String code)
      通用的 authorizationCode 协议
      Parameters:
      code - code码
      Returns:
      HttpResponse
    • doGetUserInfo

      protected String doGetUserInfo(AccToken accToken)
      通用的 用户信息
      Parameters:
      accToken - token封装
      Returns:
      HttpResponse
    • doGetRevoke

      protected String doGetRevoke(AccToken accToken)
      通用的post形式的取消授权方法
      Parameters:
      accToken - token封装
      Returns:
      HttpResponse
    • getScopes

      protected String getScopes(String separator, boolean encode, List<String> defaultScopes)
      获取以 separator分割过后的 scope 信息
      Parameters:
      separator - 多个 scope 间的分隔符
      encode - 是否 encode 编码
      defaultScopes - 默认的 scope, 当客户端没有配置 scopes 时启用
      Returns:
      String
    • parseStringToMap

      public Map<String,String> parseStringToMap(String text, boolean decode)
      字符串转map,字符串格式为 xxx=xxx&xxx=xxx
      Parameters:
      text - 待转换的字符串
      decode - 是否解码
      Returns:
      map