拿到token

This commit is contained in:
dela
2026-01-29 18:54:04 +08:00
parent 70627f09fe
commit 433bb4d3c1
9 changed files with 954 additions and 7 deletions

View File

@@ -40,6 +40,7 @@ class OAISession:
- oai-did Cookie 管理(设备指纹)
- 自动错误检测和异常抛出
- 代理支持HTTP/HTTPS/SOCKS5
- 登录获取 access_token
"""
# OpenAI 相关域名
@@ -89,6 +90,11 @@ class OAISession:
logger.info(f"Session initialized with oai-did: {self.oai_did}")
# 登录状态
self.access_token: Optional[str] = None
self.session_token: Optional[str] = None
self.logged_in_email: Optional[str] = None
def _setup_headers(self):
"""
设置 HTTP 请求头,模拟真实 Chrome 浏览器
@@ -288,6 +294,49 @@ class OAISession:
except Exception as e:
logger.warning(f"Error closing session: {e}")
async def login(self, email: str, password: str) -> Dict[str, Any]:
"""
使用邮箱密码登录,获取 access_token
参数:
email: 登录邮箱
password: 登录密码
返回:
登录结果字典,包含:
- status: 状态 (success/failed/...)
- access_token: 访问令牌(成功时)
- session_token: 会话令牌(成功时)
- error: 错误信息(失败时)
示例:
session = OAISession()
result = await session.login("user@example.com", "password123")
if result["status"] == "success":
print(f"Access Token: {result['access_token']}")
"""
from core.login_flow import LoginFlow
flow = LoginFlow(self, email, password)
result = await flow.run()
# 保存登录状态
if result.get("status") == "success":
self.access_token = result.get("access_token")
self.session_token = result.get("session_token")
self.logged_in_email = email
logger.info(f"Session logged in as: {email}")
return result
def is_logged_in(self) -> bool:
"""检查是否已登录"""
return self.access_token is not None
def get_access_token(self) -> Optional[str]:
"""获取当前的 access_token"""
return self.access_token
def __enter__(self):
"""支持 with 语句上下文管理"""
return self