Concepts clés

Projets, clés, sessions joueur, et la façon dont chaque SDK renvoie résultats et erreurs.

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

Sur cette page

Projets et clés#

Chaque jeu correspond à un projet. Ses clés identifient le projet, pas un joueur.

IdentifiantOù l'utiliser
Base URLL'adresse de cette installation. L'API se trouve sous /v1.
Project IDDans chaque requête, en tant que X-Project-ID. Public.
Clé client pk_live_…Builds du jeu et pages web, en tant que X-Client-Key. Publique : elle ne peut agir que pour des joueurs connectés.
Clé secrète sk_live_…Uniquement sur vos propres serveurs, en tant que X-Secret-Key. Affichée une seule fois et stockée sous forme de hash ; donne accès aux endpoints réservés aux serveurs.
Ne mettez jamais la clé secrète (sk_live_…) dans un build du jeu ou une page web. Tout ce qui est distribué aux joueurs peut être lu.

Joueurs et sessions#

Les appels joueur nécessitent un jeton d'accès. La connexion en renvoie un (valable une heure) ainsi qu'un jeton de rafraîchissement (valable 30 jours).

  • Les SDK enregistrent la session sur l'appareil et la rafraîchissent avant son expiration : les joueurs restent connectés d'un lancement à l'autre.
  • Les jetons de rafraîchissement changent à chaque utilisation. Réutiliser un ancien jeton déconnecte cette session partout (détection de vol).
  • Chaque joueur commence en tant qu'invité et peut ensuite lier un compte e-mail ou Google ; la progression de l'invité est conservée. Voir Joueurs.

Des résultats plutôt que des exceptions#

Les appels SDK ne lèvent jamais d'exception en cas d'erreur réseau ou serveur. Ils renvoient un résultat avec ok, une valeur et une erreur comportant un code stable, un message et l'ID de requête.

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

Nouvelles tentatives et limites de débit#

Les SDK relancent les requêtes sûres en cas d'erreur réseau ou de réponse 5xx, avec un délai exponentiel, et patientent après une réponse 429 grâce à Retry-After.

  • Chaque projet peut envoyer jusqu'à 120 requêtes par minute ; au-delà, l'API répond rate_limited.
  • Chaque compte dispose d'un quota quotidien de requêtes qui dépend de l'offre (voir Limites) ; au-delà, l'API répond quota_exceeded jusqu'à 00:00 UTC.
  • Les réponses contiennent X-RateLimit-Limit, X-RateLimit-Remaining et, à l'approche du quota, X-RateLimit-Daily-Remaining.

ID de requête et journaux#

Chaque réponse comporte un en-tête X-Request-ID, et chaque erreur inclut request_id. Recherchez-le sur la page Journaux de votre projet pour voir l'endpoint, le statut, la latence et le joueur.

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

↑↓ pour naviguer ↵ pour ouvrir Esc pour fermer