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 :
- Requêtes standards : l'API renvoie un code StandardIntegrityErrorCode.
- Requêtes classiques : l'API renvoie un code IntegrityErrorCode.
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
Valeurs supplémentaires des codes d'erreur pour la bibliothèque native
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
- Demandez à augmenter votre limite quotidienne maximale de requêtes.
- 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.