taolib.testing.oauth.services.flow_service#
OAuth 流程服务模块。
编排 OAuth2 授权码流程:生成授权 URL、交换授权码、获取用户信息。
Classes#
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 等
- 抛出:
OAuthStateError -- state 无效或已过期
OAuthCredentialNotFoundError -- 未找到凭证