taolib.testing.oauth.providers.github#
GitHub OAuth 提供商实现模块。
实现 GitHub OAuth2 标准流程。
Attributes#
Classes#
GitHub OAuth 提供商。 |
Module Contents#
- taolib.testing.oauth.providers.github.GITHUB_AUTH_URL = 'https://github.com/login/oauth/authorize'#
- taolib.testing.oauth.providers.github.GITHUB_TOKEN_URL = 'https://github.com/login/oauth/access_token'#
- taolib.testing.oauth.providers.github.GITHUB_USER_URL = 'https://api.github.com/user'#
- taolib.testing.oauth.providers.github.GITHUB_EMAILS_URL = 'https://api.github.com/user/emails'#
- taolib.testing.oauth.providers.github.GITHUB_DEFAULT_SCOPES = ['user:email', 'read:user']#
- taolib.testing.oauth.providers.github.HTTP_TIMEOUT = 10.0#
- class taolib.testing.oauth.providers.github.GitHubOAuthProvider#
GitHub OAuth 提供商。
- get_authorize_url(client_id: str, redirect_uri: str, state: str, scopes: list[str]) str#
生成 GitHub 授权 URL。
- 参数:
client_id -- GitHub Client ID
redirect_uri -- 回调 URI
state -- CSRF 防护 state 参数
scopes -- 请求的权限范围
- 返回:
完整的 GitHub 授权 URL
- async exchange_code(code: str, client_id: str, client_secret: str, redirect_uri: str) dict[str, Any]#
用授权码交换 GitHub Token。
- 参数:
code -- 授权码
client_id -- GitHub Client ID
client_secret -- GitHub Client Secret
redirect_uri -- 回调 URI
- 返回:
Token 响应字典
- 抛出:
OAuthCodeExchangeError -- 交换失败
- async fetch_user_info(access_token: str) taolib.testing.oauth.models.profile.OAuthUserInfo#
获取 GitHub 用户信息。
如果用户信息中没有邮箱,会额外调用邮箱 API 获取主邮箱。
- 参数:
access_token -- GitHub Access Token
- 返回:
标准化的用户信息
- 抛出:
OAuthUserInfoError -- 获取失败
- static _fetch_primary_email(client: httpx.AsyncClient, headers: dict[str, str]) str | None#
- Async:
获取 GitHub 用户的主邮箱。
- 参数:
client -- httpx 异步客户端
headers -- 请求头
- 返回:
主邮箱地址,获取失败返回 None