Códigos de erro

Todo erro tem um código estável. Os SDKs usam os mesmos códigos (no Unity, como enum), além de alguns para problemas que acontecem antes de a requisição chegar ao servidor.

Comentários de código e nomes da API ficam em inglês para corresponder aos SDKs.

Nesta página

Erros da API#

CódigoHTTPUnityQuandoRepetir?
validation400, 422ValidationEntrada inválida; details.fields indica o campo.Não
unauthorized401UnauthorizedChaves erradas ou token de jogador ausente, expirado ou revogado.Não
forbidden403ForbiddenProjeto suspenso, endpoint exclusivo de servidor ou HTTPS obrigatório.Não
plan_limit403PlanLimitUm limite do plano foi atingido (jogadores, entradas, armazenamento…). Nada é excluído.Não
not_found404NotFoundEndpoint, placar, jogador ou chave de salvamento desconhecido.Não
conflict409ConflictAção já realizada, ex.: uma recompensa já resgatada neste período.Não
revision_mismatch409RevisionMismatchUm salvamento na nuvem foi alterado em outro dispositivo.Não
rate_limited429RateLimitedRequisições demais por minuto ou intervalo entre envios de um placar. Aguarde Retry-After segundos.Sim
quota_exceeded429QuotaExceededA cota diária de requisições da conta acabou; ela reinicia às 00:00 UTC.Não
server_error500ServerErrorAlgo falhou no servidor. Os SDKs repetem as requisições seguras.Sim

Erros exclusivos dos SDKs#

CódigoHTTPUnityQuandoRepetir?
network—NetworkNão foi possível alcançar o servidor.Sim
timeout—TimeoutA requisição demorou mais do que o tempo limite.Sim
not_configured—NotConfiguredURL base, ID do projeto ou chave de cliente ausente ou inválido.Não
not_signed_in—NotSignedInUma chamada de jogador antes do login ou depois que a sessão expirou.Não
signature_invalid—SignatureInvalidA configuração remota falhou na verificação e não foi usada.Não
parse_error—ParseErrorNão foi possível ler a resposta (geralmente um proxy ou uma página de erro em HTML).Não
link_expired—LinkExpiredA página de vinculação de conta expirou; comece de novo.Não
link_cancelled—LinkCancelledO fluxo de vinculação de conta foi cancelado.Não

Tratamento de erros#

Mostre message para desenvolvedores, não para jogadores; tome decisões com base no código. Repita apenas os erros que permitem nova tentativa e registre o ID da requisição para encontrá-la na página Logs.

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 + ")");
}

Busca em títulos de páginas, seções e texto.

↑↓ para navegar ↵ para abrir Esc para fechar