- 添加完整的项目基础结构,包括配置、类型定义和常量 - 实现OAuth认证流程和令牌管理 - 开发请求转换和响应处理逻辑 - 添加SSE流处理和ChatCompletions API转换 - 实现模型映射和提示指令系统 - 包含Docker部署配置和快速启动文档 - 添加自动登录功能和测试脚本
2.9 KiB
2.9 KiB
Auto Login Feature
Overview
The chatgpt-codex-router now automatically checks authentication status on startup and initiates OAuth login if no valid token is found.
How It Works
- Startup Check: When the server starts, it checks for an existing authentication token
- Token Validation: If a token exists, it validates whether it's expired
- Auto Login: If no token is found or the token is expired, the server automatically:
- Generates OAuth authorization flow
- Starts local OAuth callback server on port 1455
- Attempts to open browser automatically
- Displays OAuth URL in logs for manual access
Startup Behavior
✅ Valid Token Found
[INFO] Authentication token found and valid.
[INFO] Server started on http://0.0.0.0:3000
⚠️ No Token Found
[WARN] No authentication token found. Initiating OAuth login...
[INFO] Starting OAuth flow with state: ...
[INFO] Local OAuth server started on port 1455
[INFO] OAuth login initiated.
[INFO] Please complete the OAuth flow in your browser.
[INFO] OAuth URL: https://auth.openai.com/oauth/authorize?...
[INFO] Browser should have opened automatically.
[INFO] Server started on http://0.0.0.0:3000
⚠️ Token Expired
[WARN] Authentication token expired. Please login again.
[INFO] Starting OAuth flow with state: ...
...
Manual Login
If you want to manually trigger OAuth login after the server is running:
curl -X POST http://localhost:3000/auth/login
Configuration
Disable Auto Login
If you want to disable auto-login, you can:
- Create a dummy token file (not recommended)
- Modify the check logic in
src/index.ts
Custom OAuth Server Port
To use a different port for the OAuth callback server, modify your config:
{
"oauth": {
"localServerPort": 1456
}
}
Or set via environment variable:
OAUTH_LOCAL_SERVER_PORT=1456 npm start
Token Storage
Tokens are stored in:
- Linux/Mac:
~/.chatgpt-codex-router/tokens.json - Windows:
C:\Users\<username>\.chatgpt-codex-router\tokens.json
Token file structure:
{
"access_token": "...",
"refresh_token": "...",
"expires_at": 1234567890,
"account_id": "...",
"updated_at": 1234567890
}
Troubleshooting
Port 1455 Already in Use
If you see the error:
[WARN] OAuth server not ready, manual login required.
It means port 1455 is already in use. You can:
- Kill the process using port 1455:
lsof -ti:1455 | xargs kill -9 - Use a different port via configuration
- Manually login using:
curl -X POST http://localhost:3000/auth/login
Browser Not Opening
If the browser doesn't open automatically:
- Copy the OAuth URL from the logs
- Paste it in your browser manually
OAuth Callback Failing
If OAuth callback fails:
- Check that the OAuth callback server is running on port 1455
- Verify firewall settings
- Check logs in
logs/directory for detailed error messages