Module bus.auth

Class TwitterProvider

java.lang.Object
org.miaixz.bus.auth.nimble.AbstractProvider
org.miaixz.bus.auth.nimble.twitter.TwitterProvider
All Implemented Interfaces:
Provider, org.miaixz.bus.core.Provider

public class TwitterProvider extends AbstractProvider
Twitter 登录提供者,支持 OAuth 1.0a 认证流程。 实现 Twitter 的单点登录,获取用户访问令牌和用户信息。
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • TwitterProvider

      public TwitterProvider(Context context)
      使用默认缓存构造 Twitter 提供者。
      Parameters:
      context - 上下文配置
    • TwitterProvider

      public TwitterProvider(Context context, org.miaixz.bus.cache.metric.ExtendCache cache)
      使用指定缓存构造 Twitter 提供者。
      Parameters:
      context - 上下文配置
      cache - 缓存实现
  • Method Details

    • generateNonce

      public static String generateNonce(int len)
      生成指定长度的随机 nonce。
      Parameters:
      len - 长度
      Returns:
      nonce 字符串
    • sign

      public static String sign(Map<String,String> params, String method, String baseUrl, String apiSecret, String tokenSecret)
      生成 Twitter 签名。 参考:https://developer.twitter.com/en/docs/basics/authentication/guides/creating-a-signature
      Parameters:
      params - 参数,包括 OAuth 头、查询参数、表单参数
      method - HTTP 方法
      baseUrl - 基础 URL
      apiSecret - API 密钥(可在开发者门户查看)
      tokenSecret - OAuth 令牌密钥
      Returns:
      Base64 编码的签名字符串
    • authorize

      public String authorize(String state)
      返回带状态参数的授权 URL,回调时会携带该状态。
      Specified by:
      authorize in interface Provider
      Overrides:
      authorize in class AbstractProvider
      Parameters:
      state - 状态参数,用于防止 CSRF 攻击
      Returns:
      授权 URL
    • getRequestToken

      public AccToken getRequestToken()
      获取请求令牌(Request Token)。 参考:https://developer.twitter.com/en/docs/twitter-for-websites/log-in-with-twitter/guides/implementing-sign-in-with-twitter
      Returns:
      请求令牌对象
    • getAccessToken

      public AccToken getAccessToken(Callback callback)
      将请求令牌转换为访问令牌(Access Token)。 参考:https://developer.twitter.com/en/docs/twitter-for-websites/log-in-with-twitter/guides/implementing-sign-in-with-twitter
      Parameters:
      callback - 回调数据
      Returns:
      访问令牌对象
      See Also:
    • getUserInfo

      public Material getUserInfo(AccToken accToken)
      获取用户信息。
      Parameters:
      accToken - 访问令牌
      Returns:
      用户信息对象
      Throws:
      IllegalArgumentException - 如果解析用户信息失败
      See Also:
    • userInfoUrl

      protected String userInfoUrl(AccToken accToken)
      构造用户信息 URL。
      Overrides:
      userInfoUrl in class AbstractProvider
      Parameters:
      accToken - 访问令牌
      Returns:
      用户信息 URL