Files
autoreg-skills-max/skills/chat2api-proxy/references/token-placement-pitfall-2026-07-04.md

67 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Token Placement Pitfall — 2026-07-04
## Ситуация
Сервер chatgpt2api-pro на `:5005` отвечал на `/v1/models` (13 моделей), но `/v1/chat/completions` возвращал:
```json
{"detail": "Could not parse your authentication token. Please try signing in again."}
```
## Диагностика
1. Сервер читает ChatGPT-токены из `data/token.txt` (через `utils/globals.py`):
```python
TOKENS_FILE = os.path.join(DATA_FOLDER, "token.txt")
```
2. Файл `data/token.txt` был **0 байт** (пустой)
3. Токен лежал в `tokens.txt` (корень проекта) — это пользовательский бэкап, сервер его **не читает**
## Проверка
```bash
# Содержимое data/token.txt
cat data/token.txt | wc -c
# Если 0 — токенов нет
# Проверка через эндпоинт
curl -s http://localhost:5005/tokens
# Internal Server Error = data/token.txt пуст или нет data/ папки
```
## Фикс
```bash
# Скопировать токен в правильное место
cp tokens.txt data/token.txt
# Или через API (без рестарта)
curl -X POST "http://localhost:5005/tokens/add/$(cat tokens.txt)"
# Перезапустить сервер
taskkill //F //PID <pid>
cd "C:/Users/User/AppData/Local/hermes/chatgpt2api-pro"
.venv/Scripts/python -u app.py
```
## Проверка после фикса
```bash
# data/token.txt должен быть ~1980 байт
ls -la data/token.txt
# Chat completion
curl -s -X POST http://127.0.0.1:5005/v1/chat/completions \
-H "Authorization: Bearer $(cat .env | grep ^AUTHORIZATION= | cut -d= -f2)" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.5","messages":[{"role":"user","content":"hi"}],"max_tokens":10}'
# Должен вернуть choices[0].message.content
```
## Два типа токенов
| Файл | Назначение | Длина |
|------|-----------|-------|
| `.env` → `AUTHORIZATION` | Аутентификация клиентов (Bearer-токен в запросах) | 1979 (JWT) |
| `data/token.txt` | ChatGPT токен для бэкенд-запросов к chatgpt.com | 1979 (JWT) или 45 (refresh) |
Оба могут быть одним и тем же JWT-токеном — это работает.