Коды ошибок

У каждой ошибки есть постоянный код. SDK используют те же коды (в Unity — в виде enum) и ещё несколько собственных для проблем, которые возникают до того, как запрос дошёл до сервера.

Комментарии в коде и имена API оставлены на английском, чтобы совпадать с SDK.

На этой странице

Ошибки API#

КодHTTPUnityКогда возникаетПовторять?
validation400, 422ValidationНекорректные входные данные; поле указано в details.fields.Нет
unauthorized401UnauthorizedНеверные ключи либо отсутствующий, истёкший или отозванный токен игрока.Нет
forbidden403ForbiddenПроект приостановлен, эндпоинт доступен только серверу или требуется HTTPS.Нет
plan_limit403PlanLimitДостигнут лимит тарифа (игроки, записи, хранилище…). Ничего не удаляется.Нет
not_found404NotFoundНеизвестный эндпоинт, таблица лидеров, игрок или ключ сохранения.Нет
conflict409ConflictДействие уже выполнено, например награда уже получена в этом периоде.Нет
revision_mismatch409RevisionMismatchОблачное сохранение изменилось на другом устройстве.Нет
rate_limited429RateLimitedСлишком много запросов в минуту или действует пауза таблицы лидеров. Подождите Retry-After секунд.Да
quota_exceeded429QuotaExceededДневная квота запросов аккаунта исчерпана; она обновляется в 00:00 UTC.Нет
server_error500ServerErrorСбой на сервере. Безопасные запросы SDK повторяют автоматически.Да

Ошибки на стороне SDK#

КодHTTPUnityКогда возникаетПовторять?
network—NetworkНе удалось связаться с сервером.Да
timeout—TimeoutЗапрос выполнялся дольше, чем позволяет тайм-аут.Да
not_configured—NotConfiguredБазовый URL, ID проекта или клиентский ключ не указаны или некорректны.Нет
not_signed_in—NotSignedInВызов от имени игрока до входа или после истечения сессии.Нет
signature_invalid—SignatureInvalidУдалённая конфигурация не прошла проверку и не была применена.Нет
parse_error—ParseErrorНе удалось прочитать ответ (обычно из-за прокси или HTML-страницы с ошибкой).Нет
link_expired—LinkExpiredСрок действия страницы привязки аккаунта истёк; начните заново.Нет
link_cancelled—LinkCancelledПривязка аккаунта отменена.Нет

Обработка ошибок#

Показывайте message разработчикам, а не игрокам; ветвите логику по коду. Повторяйте только ошибки, допускающие повтор, и записывайте ID запроса в лог, чтобы найти запрос на странице «Логи».

C#
var top = await Majacloud.Leaderboards.GetTopAsync("coins", 10);
if (top.Ok)
{
    foreach (var entry in top.Value.Entries)
        Debug.Log($"#{entry.Rank} {entry.PlayerName} {entry.Score}");
}
else if (top.Error.IsRetryable)
{
    // Network, timeout, 5xx or rate limit: try again later
    Debug.Log("Retry in " + top.Error.RetryAfterSeconds + " s");
}
else
{
    Debug.LogWarning(top.Error.Code + ": " + top.Error.Message + " (" + top.Error.RequestId + ")");
}

Поиск по названиям страниц, заголовкам и тексту.

↑↓ навигация ↵ открыть Esc закрыть