Лаунчер GML
Авторизация Gml.Launcher через Custom Endpoint
Сайт умеет работать сервисом входа для лаунчера GML (Gml.Launcher). Игрок вводит в лаунчере логин и пароль от сайта, бэкенд GML спрашивает у нас, кто это, и пускает игрока внутрь.
В отличие от GravitLauncher, ставить со стороны сайта ничего не нужно: работает ручка /auth/gml/login, а на стороне GML выбирается один способ входа.
Подключение
Выбрать способ входа в GML
В админке GML: Интеграции → Авторизация → Изменить, способ входа — Custom Endpoint.
Указать адрес
В поле адреса впишите полный адрес API вместе с путём:
https://api.example.com/auth/gml/loginЭтот режим GML адрес не обрезает, поэтому и порт, и путь доезжают до сайта как есть.
Проверить
curl https://api.example.com/auth/gml/login \
-H 'Content-Type: application/json' \
-d '{"Login":"owner","Password":"пароль-игрока"}'Если в ответе пришли ник и UUID игрока, связка работает.
API-ключ не нужен
Ручка публичная и рассчитана на запросы самого бэкенда GML. Частота запросов ограничена так же, как вход на сайт.
Формат запроса
Имена полей пишутся с заглавной буквы — в таком виде их присылает сам GML:
{
"Login": "owner",
"Password": "пароль",
"Totp": "123456"
}Login — ник или почта. Totp нужен только на повторном запросе, когда у игрока включена двухфакторная аутентификация.
Ответы
| Ответ | Когда |
|---|---|
200 с ником, UUID и флагом IsSlim | Вход разрешён |
401 с require2fa в теле | У игрока включена двухфакторка: лаунчер запросит код и повторит запрос |
401 | Неверный логин или пароль |
403 | Аккаунт заблокирован либо почта не подтверждена, если включено обязательное подтверждение |
429 | Слишком частые попытки |
Про встроенный тип «UniCoreCMS»
В списке способов входа GML есть и готовый тип «UniCoreCMS». Пользы в нём мало: адрес сайта он обрезает до домена, без порта и пути, а запрос лаунчера не проходит проверку captcha — на сайтах с включённой captcha такой вход не работает совсем. Custom Endpoint свободен от обеих проблем.
Новости
У GML есть провайдер новостей «Custom»: ему нужен адрес, который отдаёт массив вида { id, title, description, createdAt }. Сайт отдаёт его по адресу:
GET {API_BASEURL}/news/gml?limit=20Без авторизации. В description — текст новости без HTML, createdAt — дата публикации; скрытые новости не попадают. limit — от 1 до 100, по умолчанию 20. Штатный список /news для этого провайдера не подходит: он отдаёт страницу с data и meta, а не массив.
Что передаётся, а что нет
Лаунчеру уходят ник, UUID и флаг slim у скина. Игровые сессии GML ведёт сам, вход на сервер сайт не проверяет. Скины и плащи из кабинета лаунчер может брать по публичным адресам с ником или UUID — они описаны на странице Скины и плащи; укажите их в настройках скинов GML.
Блокировка и неподтверждённая почта срабатывают при следующем входе в лаунчер. Уже запущенную игру это не прерывает.