taolib.testing.oauth.services.flow_service#

OAuth 流程服务模块。

编排 OAuth2 授权码流程:生成授权 URL、交换授权码、获取用户信息。

Classes#

OAuthFlowService

OAuth 流程服务。

Module Contents#

class taolib.testing.oauth.services.flow_service.OAuthFlowService(credential_repo: taolib.testing.oauth.repository.credential_repo.OAuthAppCredentialRepository, state_store: taolib.testing.oauth.cache.state_store.OAuthStateStore, provider_registry: taolib.testing.oauth.providers.ProviderRegistry, token_encryptor: taolib.testing.oauth.crypto.token_encryption.TokenEncryptor)#

OAuth 流程服务。

管理 OAuth2 授权码流程的完整生命周期。

参数:
  • credential_repo -- 应用凭证仓储

  • state_store -- CSRF state 存储

  • provider_registry -- 提供商注册表

  • token_encryptor -- Token 加密器

_credential_repo#
_state_store#
_provider_registry#
_token_encryptor#
async generate_authorize_url(provider: str, redirect_uri: str | None = None, extra_state: dict[str, Any] | None = None) tuple[str, str]#

生成 OAuth 授权 URL。

参数:
  • provider -- 提供商名称

  • redirect_uri -- 自定义回调 URI(可选)

  • extra_state -- 附加到 state 的数据(如 link_to_user_id)

返回:

(authorize_url, state_token) 元组

抛出:

OAuthCredentialNotFoundError -- 未找到凭证

async exchange_code(provider: str, code: str, state: str) tuple[taolib.testing.oauth.models.profile.OAuthUserInfo, dict[str, Any]]#

交换授权码获取用户信息和 Token。

参数:
  • provider -- 提供商名称

  • code -- 授权码

  • state -- CSRF state token

返回:

(user_info, token_data) 元组,token_data 包含 access_token、refresh_token、expires_in 等

抛出: