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

Аутентификация

Для вызова операции передайте в JSON её documentId и variables.

HTTP-заголовки​

ЗаголовокОбязательныйОписание
Content-Typeдаapplication/json
Accept-LanguageнетЯзык ответа в стандартном HTTP-формате
Authorizationдля закрытых операцийBearer <sessionId>
X-Project-Contextдаidentity.contextToken текущей конфигурации проекта
X-Request-IdнетИдентификатор запроса для трассировки

Передавайте identity.contextToken из конфигурации проекта без изменений. Для авторизованных операций также необходима пользовательская сессия.

Вход по паролю​

Запрос
documentId: login
{
"documentId": "login",
"variables": {
"login": "[email protected]",
"password": "account-password",
"rememberMe": true
}
}
Ответ
200 OK
{
"data": {
"login": {
"sessionId": "session-token",
"sessionEnd": "2026-07-20 12:00:00",
"twoFactorChallenge": null,
"user": {
"id": "1001",
"email": "[email protected]"
}
}
}
}

Передавайте полученный sessionId в Authorization всех последующих закрытых запросов.

Вход с двухфакторной проверкой​

Если для аккаунта включена двухфакторная аутентификация, login не создаёт сессию. Вместо неё возвращается одноразовый запрос подтверждения:

{
"data": {
"login": {
"sessionId": null,
"twoFactorChallenge": {
"token": "opaque-challenge-token",
"availableMethods": ["totp", "email", "recovery_code"],
"expiresAt": "2026-07-19 12:10:00"
}
}
}
}

Для email сначала вызовите requestTwoFactorChallengeCode, чтобы отправить код по почте. Для totp и recovery_code этот шаг не нужен.

Запрос
documentId: verifyTwoFactorChallenge
{
"documentId": "verifyTwoFactorChallenge",
"variables": {
"challengeToken": "opaque-challenge-token",
"method": "totp",
"code": "123456"
}
}
Ответ
200 OK
{
"data": {
"verifyTwoFactorChallenge": {
"sessionId": "session-token",
"sessionEnd": "2026-07-20 12:00:00",
"user": {
"id": "1001",
"email": "[email protected]"
}
}
}
}

Используйте запрос подтверждения из текущей попытки входа. Если он истёк или исчерпан лимит попыток, начните вход заново. После успешного подтверждения повторно использовать этот запрос нельзя.

Passkey​

Вход через Passkey использует отдельную процедуру WebAuthn:

  1. Получите параметры через passkeyAuthOptions.
  2. Передайте их в WebAuthn API браузера.
  3. Отправьте полученное подтверждение в loginPasskey.

Успешный вход с Passkey создаёт сессию без дополнительного ввода пароля или кода 2FA.

Публичные операции​

Без Authorization доступны операции начала или завершения входа и публичные данные проекта:

ОперацияНазначение
registerEmailНачать регистрацию по email
confirmRegistrationCodeПодтвердить шестизначный код регистрации
login, loginGameAccountВход по паролю
sendMagicLink, loginMagicLinkВход по одноразовой ссылке
sendMagicCode, loginMagicCodeВход по одноразовому коду
requestTwoFactorChallengeCodeОтправить код по почте для текущего запроса подтверждения
verifyTwoFactorChallengeЗавершить вход с двухфакторной проверкой
passkeyAuthOptions, loginPasskeyВход через Passkey
sendPasswordRecoveryEmail, confirmPasswordRecoveryCodeВосстановление пароля
projectSettings, serversПубличная конфигурация проекта

Социальная авторизация настраивается и публикуется конкретным проектом. Она не заменяет локальные правила безопасности аккаунта.

Пример закрытого запроса​

cURL
curl -X POST https://api.mmo-web.dev/graphql \
-H "Accept-Language: ru" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer session-token" \
-H "X-Project-Context: project-context-token" \
-d '{"documentId":"me","variables":{}}'