# Руководство по устранению ошибок авторизации

## Ошибка: "Сервер вернул пустой или некорректный ответ"

Эта ошибка может возникать по нескольким причинам. Ниже приведены возможные причины и способы их устранения.

### Возможные причины

1. **Неправильный URL сервера**
   - URL должен начинаться с `http://` или `https://`
   - Проверьте, что URL введен полностью и правильно
   - Пример правильного URL: `https://crm.example.com`

2. **Проблемы с подключением к серверу**
   - Проверьте интернет-соединение
   - Убедитесь, что сервер доступен
   - Проверьте, не блокирует ли брандмауэр соединение

3. **Неверные учетные данные**
   - Проверьте правильность email и пароля
   - Убедитесь, что учетная запись активна

4. **Неправильный API ключ**
   - Проверьте, что API ключ введен правильно
   - Убедитесь, что API ключ активен и имеет необходимые права

5. **Проблемы на стороне сервера**
   - Сервер может быть временно недоступен
   - Возможны проблемы с базой данных
   - Сервер может возвращать пустой ответ из-за внутренних ошибок

### Пошаговая диагностика

1. **Проверьте вводимые данные**
   - Убедитесь, что все поля заполнены
   - Проверьте формат email
   - Убедитесь, что URL начинается с `http://` или `https://`

2. **Проверьте подключение**
   - Попробуйте открыть URL сервера в браузере
   - Проверьте, доступен ли сервер из вашей сети

3. **Проверьте логи приложения**
   - Включите отладочные логи в Android Studio
   - Ищите сообщения с тегом `AuthRepository`
   - Обратите внимание на коды HTTP ответов

4. **Проверьте API ключ**
   - Убедитесь, что API ключ действителен
   - Проверьте, имеет ли ключ необходимые права доступа

### Коды HTTP ошибок и их значения

- **400** - Некорректный запрос. Проверьте введенные данные и формат email.
- **401** - Неверный email или пароль. Проверьте правильность введенных данных.
- **403** - Доступ запрещен. Проверьте API ключ и права доступа.
- **404** - Сервер не найден. Проверьте URL сервера и подключение к сети.
- **405** - Метод не разрешен. Эндпоинт не существует или недоступен.
- **422** - Некорректные данные. Проверьте формат email и пароля.
- **500** - Ошибка сервера. Сервер временно недоступен, попробуйте позже.
- **502, 503, 504** - Проблемы с сервером. Проверьте подключение к серверу.

### Сетевые ошибки

- **UnknownHostException** - Нет подключения к серверу. Проверьте интернет-соединение и правильность URL.
- **SocketTimeoutException** - Таймаут соединения. Проверьте подключение к серверу и попробуйте снова.
- **IOException** - Ошибка сети. Проверьте подключение к интернету.

### Если проблема не решена

1. **Перезапустите приложение**
2. **Проверьте версию приложения** - убедитесь, что используется последняя версия
3. **Обратитесь в поддержку** - предоставьте:
   - Текст ошибки
   - Логи приложения (с тегом `AuthRepository`)
   - Используемый URL сервера
   - Версию приложения

### Примеры правильного ввода данных

```
URL сервера: https://crm.example.com
Email: user@example.com
Пароль: your_password
API Key: your_api_key_here
```

### Техническая информация для разработчиков

Приложение использует следующие эндпоинты для авторизации:
- `POST /api/iam/auth/login-site` - для авторизации через сайт
- `POST /api/iam/auth/login-ext` - для авторизации через расширение

Все запросы выполняются с использованием Retrofit и OkHttp с таймаутом 30 секунд.

Для диагностики проблем рекомендуется включить уровень логирования `BODY` в OkHttpInterceptor.
