Codes d'erreur

Chaque erreur a un code stable. Les SDK utilisent les mêmes codes (sous forme d'enum dans Unity), plus quelques-uns pour les problèmes qui surviennent avant qu'une requête n'atteigne le serveur.

Les commentaires du code et les noms d'API restent en anglais pour correspondre aux SDK.

Sur cette page

Erreurs de l'API#

CodeHTTPUnityQuandRéessayer ?
validation400, 422ValidationEntrée invalide ; details.fields indique le champ concerné.Non
unauthorized401UnauthorizedClés incorrectes, ou jeton joueur manquant, expiré ou révoqué.Non
forbidden403ForbiddenProjet suspendu, endpoint réservé aux serveurs, ou HTTPS requis.Non
plan_limit403PlanLimitUne limite de l'offre a été atteinte (joueurs, entrées, stockage…). Rien n'est supprimé.Non
not_found404NotFoundEndpoint, classement, joueur ou clé de sauvegarde inconnu.Non
conflict409ConflictDéjà fait, par ex. une récompense déjà réclamée pendant cette période.Non
revision_mismatch409RevisionMismatchUne sauvegarde cloud a été modifiée sur un autre appareil.Non
rate_limited429RateLimitedTrop de requêtes par minute, ou délai entre envois d'un classement non respecté. Attendez Retry-After secondes.Oui
quota_exceeded429QuotaExceededLe quota quotidien de requêtes du compte est épuisé ; il se réinitialise à 00:00 UTC.Non
server_error500ServerErrorUne erreur s'est produite sur le serveur. Les SDK relancent les requêtes sûres.Oui

Erreurs propres aux SDK#

CodeHTTPUnityQuandRéessayer ?
network—NetworkLe serveur n'a pas pu être joint.Oui
timeout—TimeoutLa requête a dépassé le délai d'expiration.Oui
not_configured—NotConfiguredURL de base, ID du projet ou clé client manquant ou invalide.Non
not_signed_in—NotSignedInUn appel joueur avant la connexion, ou après l'expiration de la session.Non
signature_invalid—SignatureInvalidLa configuration à distance n'a pas passé la vérification et n'a pas été utilisée.Non
parse_error—ParseErrorLa réponse n'a pas pu être lue (généralement à cause d'un proxy ou d'une page d'erreur HTML).Non
link_expired—LinkExpiredLa page de liaison de compte a expiré ; recommencez.Non
link_cancelled—LinkCancelledLe flux de liaison de compte a été annulé.Non

Gérer les erreurs#

Affichez message aux développeurs, pas aux joueurs ; basez votre logique sur le code. Ne relancez que les erreurs qui le permettent, et journalisez l'ID de requête pour retrouver la requête sur la page Journaux.

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

Recherche dans les titres de page, les intertitres et le texte.

↑↓ pour naviguer ↵ pour ouvrir Esc pour fermer