Gérer les codes d'erreur de l'API Play Integrity

Si une application envoie une requête à l'aide de l'API Play Integrity et que l'appel échoue, un code d'erreur est renvoyé. Le type de code d'erreur renvoyé dépend du type de requête :

Stratégies de nouvelle tentative

Nous vous recommandons d'utiliser un intervalle exponentiel entre les tentatives pour les opérations de Play Integrity qui se produisent en arrière-plan et qui n'affectent pas l'expérience de l'utilisateur lorsque sa session est en cours.

Par exemple, il est judicieux d'implémenter cette stratégie lorsque l'utilisateur confirme de nouveaux achats, car cette opération peut se produire en arrière-plan. Cette confirmation ne doit pas nécessairement se dérouler en temps réel si une erreur survient.

Après le premier échec, commencez avec un délai initial de cinq secondes avant de réessayer.

Implémentez une stratégie de nouvelle tentative avec un nombre maximal de tentatives comme condition de sortie en augmentant le délai de manière exponentielle à chaque fois (10 s, 20 s).

Lors de ces nouvelles tentatives, vérifiez la connexion réseau et ne surchargez pas l'appareil.

Si vous continuez à voir des erreurs après trois tentatives, traitez le résultat comme si le client avait échoué à toutes les vérifications d'intégrité. Plusieurs raisons peuvent expliquer l'erreur, y compris, mais sans s'y limiter, un appareil surchargé, des problèmes de connexion réseau ou une tentative de piratage.

Valeurs des codes d'erreur pour la bibliothèque Java

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

Valeurs supplémentaires des codes d'erreur pour la bibliothèque native

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

Codes d'erreur avec possibilité de nouvelles tentatives

La cause de ces erreurs est parfois due à des conditions temporaires. Vous devez donc relancer l'appel.

NETWORK_ERROR (code d'erreur -3)

Cette erreur indique un problème de connexion réseau entre l'appareil et les systèmes Play.

Solution possible

Pour effectuer une récupération, demandez à l'utilisateur de vérifier la connectivité réseau et utilisez des tentatives simples ou un intervalle exponentiel entre les tentatives, en fonction de l'action qui a déclenché l'erreur.

Voir aussi

NETWORK_ERROR pour les requêtes classiques.

TOO_MANY_REQUESTS (code d'erreur -8)

L'application appelante envoie trop de requêtes à l'API et a été limitée.

Solution possible

  1. Demandez à augmenter votre limite quotidienne maximale de requêtes.
  2. Réessayez avec un intervalle exponentiel entre les tentatives.

Voir aussi

TOO_MANY_REQUESTS pour les requêtes classiques.

GOOGLE_SERVER_UNAVAILABLE (code d'erreur -12)

Erreur inconnue au niveau du serveur Google.

Solution possible

Réessayez avec un intervalle exponentiel entre les tentatives. Si le problème persiste, envisagez de signaler un bug.

Voir aussi

GOOGLE_SERVER_UNAVAILABLE pour les requêtes classiques.

CLIENT_TRANSIENT_ERROR (code d'erreur -18)

Une erreur temporaire s'est produite sur l'appareil client.

Pour les requêtes API standards, cela est pris en charge à partir de la version 1.3.0 de la bibliothèque d'API Play Integrity pour Kotlin et Java, du plug-in Google Play Integrity pour Unity 1.3.0 ou version ultérieure et du SDK Play Core natif 1.13.0 ou version ultérieure.

Solution possible

Réessayez avec un intervalle exponentiel entre les tentatives.

Voir aussi

CLIENT_TRANSIENT_ERROR pour les requêtes classiques.

Remarque : Lorsqu'elle est signalée lors de l'utilisation d'une requête API classique, la valeur renvoyée est -17.

INTERNAL_ERROR (code d'erreur -100)

Erreur interne inconnue.

Solution possible

Réessayez avec un intervalle exponentiel entre les tentatives. Si le problème persiste, envisagez de signaler un bug.

Voir aussi

INTERNAL_ERROR pour les requêtes classiques.

STANDARD_INTEGRITY_INTERNAL_ERROR (code d'erreur -100)

Erreur interne inconnue.

Solution possible

Réessayez avec un intervalle exponentiel entre les tentatives. Si le problème persiste, envisagez de signaler un bug.

Voir aussi

Consultez la page INTEGRITY_INTERNAL_ERROR pour les requêtes classiques.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (code d'erreur -102)

Une erreur s'est produite lors de l'initialisation de l'API Integrity Standard.

Solution possible

Réessayez avec un intervalle exponentiel entre les tentatives. Si le problème persiste, envisagez de signaler un bug.

Voir aussi

Consultez la page INTEGRITY_INITIALIZATION_FAILED pour les requêtes classiques.

Codes d'erreur sans possibilité de nouvelles tentatives

Dans ces cas, il est peu probable que les nouvelles tentatives automatiques permettent de remédier à la situation. Toutefois, une nouvelle tentative manuelle peut être utile si l'utilisateur résout la condition à l'origine du problème. Par exemple, si l'utilisateur met à jour sa version du Play Store vers une version compatible, une nouvelle tentative manuelle de l'opération initiale peut fonctionner.

API_NOT_AVAILABLE (code d'erreur -1)

La version du Play Store installée sur l'appareil est peut-être ancienne et l'API Integrity peut ne pas être disponible. Il est également possible que l'API Integrity ne soit pas activée dans la Google Play Console.

Solution possible

  • Assurez-vous que l'API Integrity est activée dans la Google Play Console.
  • Demandez à l'utilisateur de mettre à jour le Play Store.

Voir aussi

Consultez la page API_NOT_AVAILABLE pour les requêtes classiques.

PLAY_STORE_NOT_FOUND (code d'erreur -2)

Aucune application Play Store officielle n'a été trouvée sur l'appareil.

Solution possible

Demandez à l'utilisateur d'installer ou d'activer le Google Play Store.

Voir aussi

Consultez la page PLAY_STORE_NOT_FOUND pour les requêtes classiques.

PLAY_STORE_ACCOUNT_NOT_FOUND (code d'erreur -4)

Remarque : Cela n'est signalé que pour les requêtes classiques via IntegrityErrorCode.

Aucun compte Play Store n'a été trouvé sur l'appareil. Notez que l'API Play Integrity prend désormais en charge les requêtes non authentifiées. Ce code d'erreur n'est utilisé que pour les versions plus anciennes du Play Store qui ne sont pas prises en charge.

Solution possible

Demandez à l'utilisateur d'effectuer la mise à jour et de se connecter au Google Play Store.

APP_NOT_INSTALLED (code d'erreur -5)

L'application appelante n'est pas installée. Un problème est survenu, peut-être une attaque.

Solution possible

Pas d'action possible. Traitez le résultat comme si le client avait échoué à toutes les vérifications d'intégrité.

Voir aussi

Consultez la page APP_NOT_INSTALLED pour les requêtes classiques.

PLAY_SERVICES_NOT_FOUND (code d'erreur -6)

Les services Play ne sont pas disponibles ou doivent être mis à jour.

Solution possible

Demandez à l'utilisateur d'installer ou d'activer les Services Play.

Voir aussi

Consultez la page APP_NOT_INSTALLED pour les requêtes classiques.

APP_UID_MISMATCH (code d'erreur -7)

L'UID (ID utilisateur) de l'application appelante ne correspond pas à celui du gestionnaire de packages.

Solution possible

Pas d'action possible. Traitez le résultat comme si le client avait échoué à toutes les vérifications d'intégrité.

Voir aussi

Consultez la page APP_UID_MISMATCH pour les requêtes classiques.

CANNOT_BIND_TO_SERVICE (code d'erreur -9)

Échec de la liaison avec le service sur le Play Store. Ce problème peut être dû au fait qu'une ancienne version du Play Store est installée sur l'appareil.

Solution possible

Demandez à l'utilisateur de mettre à jour le Google Play Store.

Voir aussi

Consultez la page CANNOT_BIND_TO_SERVICE pour les requêtes classiques.

NONCE_TOO_SHORT (code d'erreur -10)

Remarque : Cela n'est signalé que pour les requêtes classiques via IntegrityErrorCode.

La longueur du nonce est trop courte. La valeur du nonce doit être d'au moins 16 octets avant l'encodage base64.

Solution possible

Réessayez avec un nonce plus long.

NONCE_TOO_LONG (code d'erreur -11)

Remarque : Cela n'est signalé que pour les requêtes classiques via IntegrityErrorCode.

La longueur du nonce est trop longue. La valeur du nonce doit être inférieure à 500 octets avant l'encodage base64.

Solution possible

Réessayez avec un nonce plus court.

NONCE_IS_NOT_BASE64 (code d'erreur -13)

Remarque : Cela n'est signalé que pour les requêtes classiques via IntegrityErrorCode.

Nonce n'est pas encodé sous la forme d'une chaîne base64 no-wrap sécurisée pour le Web.

Solution possible

Réessayez avec un nonce au format correct.

PLAY_STORE_VERSION_OUTDATED (code d'erreur -14)

L'application Play Store doit être mise à jour.

Solution possible

Demandez à l'utilisateur de mettre à jour le Google Play Store.

Voir aussi

Consultez la page PLAY_STORE_VERSION_OUTDATED pour les requêtes classiques.

PLAY_SERVICES_VERSION_OUTDATED (code d'erreur -15)

Vous devez mettre à jour les services Google Play.

Solution possible

Demandez à l'utilisateur de mettre à jour les services Google Play.

Voir aussi

Consultez la page PLAY_SERVICES_VERSION_OUTDATED pour les requêtes classiques.

CLOUD_PROJECT_NUMBER_IS_INVALID (code d'erreur -16)

Le numéro de projet cloud fourni n'est pas valide.

Solution possible

Utilisez le numéro du projet cloud pour lequel vous avez activé l'API Play Integrity.

Voir aussi

Consultez la page CLOUD_PROJECT_NUMBER_IS_INVALID pour les requêtes classiques.

REQUEST_HASH_TOO_LONG (code d'erreur -17)

Remarque : Ce point n'est indiqué que lors de l'utilisation d'une requête standard via StandardIntegrityErrorCode.

L'élément requestHash fourni est trop long. La longueur de l'élément requestHash doit être inférieure à 500 caractères.

Solution possible

Réessayez avec un élément requestHash plus court.

INTEGRITY_TOKEN_PROVIDER_INVALID (code d'erreur -19)

Remarque : Cette information n'est signalée que pour les requêtes standards via StandardIntegrityErrorCode.

Le StandardIntegrityTokenProvider n'est pas valide. Ce code d'erreur n'est disponible que pour les requêtes API standards, il est pris en charge à partir de la version 1.3.0 de la bibliothèque pour les langages de programmation Kotlin et Java, du plug-in Google Play Integrity pour Unity 1.3.0 (ou version ultérieure) et du SDK natif Play Core 1.13.0 ou ultérieur.

Solution possible

Demandez un nouveau fournisseur de jetons d'intégrité.

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (code d'erreur -101)

StandardIntegrityManager n'est pas initialisé.

Solution possible

Appelez d'abord StandardIntegrityManager_init().

Voir aussi

Consultez la page INTEGRITY_INITIALIZATION_NEEDED pour les requêtes classiques

STANDARD_INTEGRITY_INVALID_ARGUMENT (code d'erreur -103)

Argument non valide transmis à l'API Integrity.

Solution possible

Réessayez avec le bon argument.

Voir aussi

Consultez la page INTEGRITY_INVALID_ARGUMENT pour les requêtes classiques.