Перейти к основному содержимому

Авторизация

Операции авторизации создают пользовательскую сессию, помогают войти через социальные провайдеры или завершить текущий сеанс.

Вход по логину и паролю​

MutationdocumentId: loginauth: public

login​

Описание​

Авторизует пользователя по email или игровому логину и возвращает сессию личного кабинета.

Входные данные​

ПолеТипОбязательныйОписание
loginString!✓Email или логин
passwordString!✓Пароль
rememberMeBoolean-Продленная сессия
utmJSON-UTM-метки
launcherInt-ID лаунчера

Результат​

Тип ответа - LoginResult.

Ошибки​

  • METHOD_DISABLED - выбранный способ входа отключен в проекте.
  • INVALID_CREDENTIALS - логин или пароль неверные.
  • TOO_MANY_ATTEMPTS - превышен лимит попыток входа.
  • USER_BANNED - аккаунт заблокирован.

Защита проекта учитывает короткий поток запросов с IP, сочетание IP и логина, один логин с разных IP и перебор неизвестных логинов. User-Agent не используется как доверенная граница. При ограничении extensions.retryAfterSeconds содержит точное время ожидания.

Пример обмена​

Запрос
documentId: login
{
"documentId": "login",
"variables": {
"login": "GameLogin",
"password": "password123",
"rememberMe": true,
"utm": {
"source": "site",
"medium": "web",
"campaign": "launch"
},
"launcher": 1
}
}
Ответ
200 OK
{
"data": {
"login": {
"sessionId": "session-token",
"user": {
"id": "1001",
"email": "[email protected]",
"selectedServerId": 1
}
}
}
}

Связанные типы​

MutationdocumentId: loginGameAccountauth: public

loginGameAccount​

Описание​

Авторизует пользователя по логину и паролю игрового аккаунта.

Входные данные​

ПолеТипОбязательныйОписание
loginString!✓Логин игрового аккаунта
passwordString!✓Пароль игрового аккаунта
serverIdInt!✓ID сервера
utmJSON-UTM-метки

Результат​

Тип ответа - LoginResult.

Ошибки​

  • INVALID_CREDENTIALS - логин или пароль неверные.
  • USER_NOT_FOUND - мастер-аккаунт не найден.
  • METHOD_DISABLED - вход через игровой аккаунт отключен в проекте.
  • TOO_MANY_ATTEMPTS - превышен лимит попыток входа.
  • USER_BANNED - аккаунт заблокирован.

Пример обмена​

Запрос
documentId: loginGameAccount
{
"documentId": "loginGameAccount",
"variables": {
"login": "GameLogin",
"password": "password123",
"serverId": 1,
"utm": {}
}
}
Ответ
200 OK
{
"data": {
"loginGameAccount": {
"sessionId": "session-token",
"user": {
"id": "1001",
"email": "[email protected]"
}
}
}
}

Связанные типы​

MutationdocumentId: loginPasskeyauth: public

loginPasskey​

Описание​

Завершает вход через passkey/WebAuthn assertion.

Входные данные​

ПолеТипОбязательныйОписание
assertionJSON!✓Ответ WebAuthn
utmJSON-UTM-метки

Результат​

Тип ответа - LoginResult.

Ошибки​

  • PASSKEY_INVALID_ASSERTION - ответ WebAuthn неверный.
  • PASSKEY_NOT_FOUND - соответствующий passkey не найден.
  • USER_NOT_FOUND - пользователь не найден.
  • TOO_MANY_ATTEMPTS - превышен лимит попыток входа.

Пример обмена​

Запрос
documentId: loginPasskey
{
"documentId": "loginPasskey",
"variables": {
"assertion": {},
"utm": {}
}
}
Ответ
200 OK
{
"data": {
"loginPasskey": {
"sessionId": "session-token",
"user": {
"id": "1001"
}
}
}
}

Связанные типы​

URL входа через соцсеть​

QuerydocumentId: socialAuthUrlauth: public

socialAuthUrl​

Описание​

Возвращает URL перенаправления на внешний OAuth-провайдер.

Входные данные​

ПолеТипОбязательныйОписание
providerString!✓Код провайдера: google, discord, vk и другие подключенные соцсети

Результат​

Тип ответа - SocialAuthUrl с URL перенаправления и кодом провайдера.

Ошибки​

  • SOCIAL_PROVIDER_DISABLED - провайдер не настроен или отключен в проекте.

Пример обмена​

Запрос
documentId: socialAuthUrl
{
"documentId": "socialAuthUrl",
"variables": {
"provider": "google"
}
}
Ответ
200 OK
{
"data": {
"socialAuthUrl": {
"url": "https://project.example/auth/google",
"provider": "google"
}
}
}

Связанные типы​

Вход по коду​

MutationdocumentId: sendMagicCodeauth: public

sendMagicCode​

Описание​

Отправляет одноразовый код входа на email пользователя.

Входные данные​

ПолеТипОбязательныйОписание
emailString!✓Email пользователя
gameServerIdInt-Сервер, в контексте которого выполняется вход

Результат​

Тип ответа - OperationResult.

Ошибки​

  • METHOD_DISABLED - вход по коду отключен в проекте.
  • MAGIC_CODE_ALREADY_SENT - новый код запрошен до окончания интервала повторной отправки.

Пример обмена​

Запрос
documentId: sendMagicCode
{
"documentId": "sendMagicCode",
"variables": {
"email": "[email protected]",
"gameServerId": 1
}
}
Ответ
200 OK
{
"data": {
"sendMagicCode": {
"message": "Код для входа отправлен"
}
}
}

Связанные типы​

MutationdocumentId: loginMagicCodeauth: public

loginMagicCode​

Описание​

Подтверждает одноразовый код и создает пользовательскую сессию.

Входные данные​

ПолеТипОбязательныйОписание
emailString!✓Email пользователя
codeString!✓Одноразовый код
gameServerIdInt-Сервер входа
utmJSON-UTM-метки

Результат​

Тип ответа - LoginResult.

Ошибки​

  • METHOD_DISABLED - вход по коду отключен в проекте.
  • MAGIC_CODE_EXPIRED - код неверный или истек.
  • TOO_MANY_ATTEMPTS - превышен лимит попыток подтверждения.
  • USER_BANNED - аккаунт заблокирован.

Пример обмена​

Запрос
documentId: loginMagicCode
{
"documentId": "loginMagicCode",
"variables": {
"code": "123456",
"email": "[email protected]",
"gameServerId": 1,
"utm": {
"source": "site",
"medium": "web",
"campaign": "launch"
}
}
}
Ответ
200 OK
{
"data": {
"loginMagicCode": {
"sessionId": "session-token",
"user": {
"id": "1001",
"email": "[email protected]"
}
}
}
}

Связанные типы​

Вход по ссылке​

MutationdocumentId: sendMagicLinkauth: public

Описание​

Отправляет на email ссылку для входа без пароля.

Входные данные​

ПолеТипОбязательныйОписание
emailString!✓Email пользователя
gameServerIdInt-Сервер входа

Результат​

Тип ответа - OperationResult.

Ошибки​

  • METHOD_DISABLED - вход по ссылке отключен в проекте.
  • MAGIC_LINK_ALREADY_SENT - новая ссылка запрошена до окончания интервала повторной отправки.

Пример обмена​

Запрос
documentId: sendMagicLink
{
"documentId": "sendMagicLink",
"variables": {
"email": "[email protected]",
"gameServerId": 1
}
}
Ответ
200 OK
{
"data": {
"sendMagicLink": {
"message": "Ссылка для входа отправлена"
}
}
}

Связанные типы​

MutationdocumentId: loginMagicLinkauth: public

Описание​

Подтверждает токен из magic link и возвращает сессию пользователя.

Входные данные​

ПолеТипОбязательныйОписание
tokenString!✓Токен из ссылки
emailString!✓Email пользователя
gameServerIdInt-Сервер входа
utmJSON-UTM-метки

Результат​

Тип ответа - LoginResult.

Ошибки​

  • METHOD_DISABLED - вход по ссылке отключен в проекте.
  • MAGIC_LINK_EXPIRED - токен неверный или истек.
  • TOO_MANY_ATTEMPTS - превышен лимит попыток подтверждения.
  • USER_BANNED - аккаунт заблокирован.

Пример обмена​

Запрос
documentId: loginMagicLink
{
"documentId": "loginMagicLink",
"variables": {
"token": "magic-token",
"email": "[email protected]",
"gameServerId": 1,
"utm": {
"source": "site",
"medium": "web",
"campaign": "launch"
}
}
}
Ответ
200 OK
{
"data": {
"loginMagicLink": {
"sessionId": "session-token",
"user": {
"id": "1001",
"email": "[email protected]"
}
}
}
}

Связанные типы​

Выход​

MutationdocumentId: logoutauth: Bearer session

logout​

Описание​

Завершает текущую пользовательскую сессию.

Входные данные​

Операция не принимает переменные.

Результат​

Тип ответа - OperationResult.

Если сессия отсутствует или уже завершена, операция также возвращает сообщение о завершении.

Пример обмена​

Запрос
documentId: logout
{
"documentId": "logout",
"variables": {}
}
Ответ
200 OK
{
"data": {
"logout": {
"message": "Сессия завершена"
}
}
}

Связанные типы​