Лаунчер
Интеграция с GravitLauncher и отдача скинов
Сайт умеет работать сервисом авторизации для GravitLauncher. Игрок вводит логин и пароль от сайта, лаунчер спрашивает у нас, кто это, и получает сессию для входа на сервер.
Со стороны лаунчера этим занимается модуль UnicoreProvider, со стороны сайта работают ручки под /auth/gravit. Для других лаунчеров есть отдельные страницы — Лаунчер GML и Лаунчсервер Laminara.
Подключение
Выпустить ключ
Утилиты → API-ключи → Создать, право kernel.provider, в разрешённые адреса — IP машины, где стоит LaunchServer.
Настроить UnicoreProvider
В конфиге LaunchServer пропишите базовый адрес API и выпущенный ключ. Ключ уходит в заголовке Authorization: Api-Key …, как у всех остальных машинных клиентов.
Проверить
curl https://api.example.com/auth/gravit/ping \
-H 'Authorization: Api-Key ваш-ключ'Если в ответе пришли данные служебного пользователя, ключ и адрес приняты.
Ручки
Все требуют право kernel.provider.
| Метод | Путь | Что делает |
|---|---|---|
GET | /auth/gravit/ping | Проверка связи |
GET | /auth/gravit/getAuthDetails | Какие способы входа поддерживаются |
GET | /auth/gravit/getUserByUsername/:username | Найти по нику или почте |
GET | /auth/gravit/getUserByUUID/:uuid | Найти по UUID |
GET | /auth/gravit/getUserByToken | Кто владелец access-токена |
POST | /auth/gravit/authorize | Вход по паролю (и TOTP) |
POST | /auth/gravit/refreshToken | Обновить токен |
POST | /auth/gravit/deleteSession | Закрыть сессию |
POST | /auth/gravit/exitUser | Выйти со всех устройств |
POST | /auth/gravit/checkServer | Проверка входа на сервер |
POST | /auth/gravit/joinServer | Регистрация входа на сервер |
getAuthDetails отвечает, что поддерживаются password и totp. По этому ответу лаунчер решает, спрашивать ли второй фактор.
Ошибки
Вместо обычных сообщений здесь возвращаются свои коды. Лаунчер их ждёт и показывает игроку понятный текст:
| Код | Когда |
|---|---|
auth.usernotfound | Такого игрока нет |
auth.wrongpassword | Неверный пароль |
auth.require2fa | Нужен код двухфакторки |
auth.userblocked | Аккаунт заблокирован |
auth.expiretoken | Токен просрочен |
auth.invalidtoken | Токен битый |
Неактивированные аккаунты
Если в настройках включено обязательное подтверждение почты, игрок без подтверждения не должен попадать на сервер. Проверяйте это на стороне сервера. Сессия сама по себе ещё не значит, что аккаунт активирован.
Скины и плащи
Адрес и хеш скина приходят в ответе на запрос игрока, лаунчеру ничего настраивать не нужно. Публичные адреса текстур по нику и UUID, кэширование и поведение без файла описаны на странице Скины и плащи.
Публичные профили
| Путь | Что отдаёт |
|---|---|
/users/public/username/:username | Профиль по нику |
/users/public/uuid/:uuid | Профиль по UUID |
/users/public/user/:username | Расширенный публичный профиль |
Наружу уходит только безопасное подмножество полей. Ни почты, ни балансов, ни служебных флагов там нет.