Passer au contenu principal
Un appel d’API asynchrone du SDK PlayFab Services peut échouer à plusieurs étapes différentes. La gestion de ces erreurs varie selon la façon dont l’opération échoue et le moment où elle échoue. Comme la plupart des appels asynchrones du GDK, les API PlayFab suivent le même modèle d’appel général :
  1. Appel PF*Async(…), qui démarre une opération asynchrone.
  2. (Facultatif) Appel XAsyncGetStatus(…) pour suivre l’état de l’opération asynchrone. Peut être utilisé pour attendre la fin de l’opération asynchrone.
  3. PF*GetResultSize(…) pour récupérer la taille en octets de la charge utile du résultat.
  4. PF*GetResult(…) pour récupérer le résultat de l’opération asynchrone.
Chacun de ces appels peut échouer pour différentes raisons. Les sections suivantes détaillent les types d’échecs les plus fréquemment rencontrés.

Échecs synchrones

Un échec synchrone se produit lorsque l’appel PF*Async initial retourne une erreur. Ce type d’échec indique généralement une erreur de programmation : modèle d’appel non valide, arguments non valides, etc. Ces types d’erreurs doivent être résolus pendant le développement. La plupart des autres échecs synchrones sont irrécupérables et ne peuvent pas être facilement gérés (par exemple E_OUTOFMEMORY).

Échecs asynchrones

Un échec asynchrone se produit lorsque XAsyncGetStatus, PF*GetResultSize ou PF*GetResult échoue. L’éventail des échecs asynchrones est plus large. Outre les erreurs dues à des arguments non valides, les échecs asynchrones se répartissent en plusieurs catégories, décrites plus en détail dans les sections suivantes.

Échecs de validation des jetons

Avant de lancer un appel de service PlayFab, le SDK effectue une validation côté client pour s’assurer que le jeton d’authentification requis est disponible et toujours valide. Si cette vérification échoue, l’une des erreurs suivantes est retournée :
  • E_PF_NOENTITYTOKEN (0x89235411) : Indique que l’EntityToken associé au PFEntityHandle fourni a expiré. Pour plus d’informations sur la façon de gérer cette situation, consultez Gérer l’expiration des jetons.
  • E_PF_NOSECRETKEY (0x89235412) Indique que le PFEntityHandle fourni n’a pas de SecretKey associée. L’absence de SecretKey signifie généralement que vous avez tenté d’effectuer une requête avec un type d’entité non valide. Les API qui nécessitent une SecretKey ne peuvent être appelées que par des entités de titre. Notez que les API utilisant une SecretKey sont destinées aux scénarios serveur ou d’administration et ne sont pas disponibles dans le GDK.

Échecs du service PlayFab

Même si le SDK réussit à envoyer la requête au service PlayFab, le service peut retourner une erreur. Il existe deux grands types d’erreurs du service PlayFab : les erreurs globales, qui peuvent être retournées par n’importe quelle API PlayFab, et les erreurs spécifiques, propres à chaque API. Voici la liste complète des échecs globaux :
  • E_PF_API_CLIENT_REQUEST_RATE_LIMIT_EXCEEDED (0x892354dd)
  • E_PF_API_CONCURRENT_REQUEST_LIMIT_EXCEEDED (0x8923556b)
  • E_PF_CONCURRENT_EDIT_ERROR (0x8923549b)
  • E_PF_DATA_UPDATE_RATE_EXCEEDED (0x89235534)
  • E_PF_DOWNSTREAM_SERVICE_UNAVAILABLE (0x89235495)
  • E_PF_INVALID_API_ENDPOINT (0x89235499)
  • E_PF_OVER_LIMIT (0x892354ec)
  • E_PF_SERVICE_UNAVAILABLE (0x89235491)
  • E_PF_ACCOUNT_BANNED (0x89235423)
  • E_PF_ACCOUNT_DELETED (0x89235557)
  • E_PF_ACCOUNT_NOT_FOUND (0x89235422)
  • E_PF_API_REQUESTS_DISABLED_FOR_TITLE (0x8923553c)
  • E_PF_INVALID_CONTENT_TYPE (0x892354a6)
  • E_PF_INVALID_ENTITY_TYPE (0x8923558a):
  • E_PF_INVALID_PARAMS (0x89235421)
  • E_PF_INVALID_REQUEST (0x89235468)
  • E_PF_INVALID_TITLE_ID (0x89235425)
  • E_PF_NOT_AUTHENTICATED (0x8923546b)
  • E_PF_NOT_AUTHORIZED (0x89235478)
  • E_PF_NOT_AUTHORIZED_BY_TITLE (0x892354d5)
  • E_PF_PROFILE_DOES_NOT_EXIST (0x8923553f)
  • E_PF_TITLE_DELETED (0x89235570)
  • E_PF_UNKNOWN_ERROR (0x89235448)
Pour plus d’informations sur les recommandations de nouvelle tentative en cas d’échec du service, consultez Codes d’erreur globaux des méthodes d’API du service PlayFab.

Échecs dus à la limitation

Les erreurs de limitation, signalées par un code d’état HTTP 429, constituent une catégorie d’échecs du service. Lorsque le service PlayFab retourne une erreur de limitation, cela signifie que le client appelle un point de terminaison trop souvent sur une période donnée. Lorsque le SDK reçoit une erreur de limitation, il relance automatiquement la requête après un court délai d’attente. Si la requête n’aboutit toujours pas dans la fenêtre de nouvelle tentative configurée, l’erreur est transmise au titre. Les paramètres de nouvelle tentative du SDK peuvent être configurés en appelant PFSetHttpRetrySettings.

Échecs réseau

Si la pile réseau sous-jacente retourne une erreur, celle-ci est transmise au client. Un large éventail d’erreurs peut se produire selon la défaillance réseau. La plupart des erreurs réseau se traduisent par E_HC_NO_NETWORK (0x89235006).

Détails supplémentaires sur les erreurs et traçage

En plus du HRESULT, le service PlayFab retourne parfois une chaîne errorDetails. Cette chaîne n’est pas exposée aux clients finaux, mais peut être utile pendant le développement et le débogage. Pour savoir comment activer le traçage détaillé afin d’afficher la chaîne errorDetails retournée, consultez le guide de traçage.”.

Référence

[Gestion des erreurs dans le Microsoft Game Development Kit][/gaming/gdk/_content/gc/system/overviews/error-handling]
Dernière modification le 8 octobre 2026