Si una aplicación realiza una solicitud a través de la API de Play Integrity y la llamada falla, se muestra un código de error. El tipo de código de error que se muestra depende del tipo de solicitud:
- Solicitudes estándar: La API muestra un StandardIntegrityErrorCode.
- Solicitudes clásicas: La API muestra un IntegrityErrorCode.
Estrategias de reintento
Recomendamos usar la retirada exponencial para las operaciones de Play Integrity que suceden en segundo plano y no afectan la experiencia del usuario mientras este se encuentra en una sesión.
Por ejemplo, es apropiado implementar esta estrategia cuando se procesan compras nuevas porque esta operación puede ocurrir en segundo plano, y el procesamiento de la compra no tiene que ocurrir necesariamente en tiempo real si se produce un error.
Después de la primera falla, comienza con un retraso inicial de 5 segundos antes de reintentarlo.
Implementa una estrategia de reintento con una cantidad máxima de intentos como condición de salida usando un aumento exponencial del retraso cada vez (10 s y 20 s).
Mientras realizas estos reintentos, verifica si hay una conexión de red y no sobrecargues el dispositivo.
Si sigues viendo errores después de tres reintentos, trata el resultado como si el cliente no aprobara todas las verificaciones de integridad. El error puede deberse a varios motivos, incluidos, entre otros, la sobrecarga del dispositivo, problemas de conexión de red o la intervención de un atacante.
Valores de códigos de error de la biblioteca de Java
Valores de códigos de error adicionales de la biblioteca nativa
Códigos de error que se pueden reintentar
A veces, la causa de estos errores son condiciones transitorias, por lo que debes reintentar la llamada.
NETWORK_ERROR
(código de error -3)
Este error indica que hubo un problema con la conexión de red entre el dispositivo y los sistemas de Play.
Resolución posible
Para solucionarlo, pídele al usuario que compruebe la conectividad de red y usa reintentos simples o una retirada exponencial, según la acción que activó el error.
Consulta también
NETWORK_ERROR
para las solicitudes clásicas.
TOO_MANY_REQUESTS
(código de error -8)
La app que realiza la llamada envía demasiadas solicitudes a la API y se limitaron.
Resolución posible
- Realiza una solicitud para aumentar la cantidad máxima diaria de solicitudes.
- Vuelve a intentarlo con una retirada exponencial.
Consulta también
TOO_MANY_REQUESTS
para las solicitudes clásicas.
GOOGLE_SERVER_UNAVAILABLE
(código de error -12)
Error interno del servidor de Google desconocido.
Resolución posible
Vuelve a intentarlo con una retirada exponencial. Considera informar un error si falla de manera constante.
Consulta también
GOOGLE_SERVER_UNAVAILABLE
para las solicitudes clásicas.
CLIENT_TRANSIENT_ERROR
(código de error -18)
Se produjo un error transitorio en el dispositivo del cliente.
En el caso de las solicitudes a la API estándar, esto es compatible a partir de la versión 1.3.0 de la biblioteca de la API de Play Integrity para Kotlin y Java, el complemento de Google Play Integrity para Unity 1.3.0 o versiones posteriores y el SDK nativo de Play Core 1.13.0 o versiones posteriores.
Resolución posible
Vuelve a intentarlo con una retirada exponencial.
Consulta también
CLIENT_TRANSIENT_ERROR
para las solicitudes clásicas.
Nota: Cuando se informa mientras se utiliza una solicitud a la API clásica, el valor que se muestra es -17.
INTERNAL_ERROR
(código de error -100)
Error interno desconocido.
Resolución posible
Vuelve a intentarlo con una retirada exponencial. Considera informar un error si falla de manera constante.
Consulta también
INTERNAL_ERROR
para las solicitudes clásicas.
STANDARD_INTEGRITY_INTERNAL_ERROR
(código de error -100)
Error interno desconocido.
Resolución posible
Vuelve a intentarlo con una retirada exponencial. Considera informar un error si falla de manera constante.
Consulta también
INTEGRITY_INTERNAL_ERROR
para las solicitudes clásicas.
STANDARD_INTEGRITY_INITIALIZATION_FAILED
(código de error -102)
Se produjo un error durante la inicialización de la API de Integrity estándar.
Resolución posible
Vuelve a intentarlo con una retirada exponencial. Considera informar un error si falla de manera constante.
Consulta también
INTEGRITY_INITIALIZATION_FAILED
para las solicitudes clásicas.
Códigos de error que no se pueden reintentar
Es poco probable que los reintentos automáticos sean de ayuda en estos casos. Sin embargo, un reintento manual puede ser útil si el usuario soluciona la condición que causó el problema. Por ejemplo, si el usuario actualiza su versión de Play Store a una versión admitida, podría funcionar un reintento manual de la operación inicial.
API_NOT_AVAILABLE
(código de error -1)
Es posible que la versión de Play Store instalada en el dispositivo sea antigua y que la API de Integrity no esté disponible. Otra posibilidad es que la API de Integrity no esté habilitada en Google Play Console.
Resolución posible
- Asegúrate de que la API de Integrity esté habilitada en Google Play Console.
- Pídele al usuario que actualice Play Store.
Consulta también
API_NOT_AVAILABLE
para las solicitudes clásicas.
PLAY_STORE_NOT_FOUND
(código de error -2)
No se encontró ninguna app oficial de Play Store en el dispositivo.
Resolución posible
Pídele al usuario que instale o habilite Google Play Store.
Consulta también
PLAY_STORE_NOT_FOUND
para las solicitudes clásicas.
PLAY_STORE_ACCOUNT_NOT_FOUND
(código de error -4)
Nota: Esto solo se informa para las solicitudes clásicas a través de IntegrityErrorCode
.
No se encontró ninguna cuenta de Play Store en el dispositivo. Ten en cuenta que la API de Play Integrity ahora admite solicitudes que no se hayan autenticado. Este código de error solo se usa para versiones anteriores de Play Store que no son compatibles.
Resolución posible
Pídele al usuario que actualice Google Play Store y acceda a su cuenta.
APP_NOT_INSTALLED
(código de error -5)
No se instaló la app que realiza la llamada. Ocurrió un problema; es posible que se trate de un ataque.
Resolución posible
No se pueden realizar acciones. Trata el resultado como si el cliente no aprobara todas las verificaciones de integridad.
Consulta también
APP_NOT_INSTALLED
para las solicitudes clásicas.
PLAY_SERVICES_NOT_FOUND
(código de error -6)
Los Servicios de Play no están disponibles o deben actualizarse.
Resolución posible
Pídele al usuario que instale o actualice los Servicios de Play.
Consulta también
APP_NOT_INSTALLED
para las solicitudes clásicas.
APP_UID_MISMATCH
(código de error -7)
El UID (ID de usuario) de la app que realiza la llamada no coincide con el del Administrador de paquetes.
Resolución posible
No se pueden realizar acciones. Trata el resultado como si el cliente no aprobara todas las verificaciones de integridad.
Consulta también
APP_UID_MISMATCH
para las solicitudes clásicas.
CANNOT_BIND_TO_SERVICE
(código de error -9)
No se pudo realizar la vinculación al servicio de Play Store. Esto puede deberse a que el dispositivo tiene instalada una versión anterior de Play Store.
Resolución posible
Pídele al usuario que actualice Google Play Store.
Consulta también
CANNOT_BIND_TO_SERVICE
para las solicitudes clásicas.
NONCE_TOO_SHORT
(código de error -10)
Nota: Esto solo se informa para las solicitudes clásicas a través de IntegrityErrorCode
.
La longitud del nonce es demasiado corta. El nonce debe tener un mínimo de 16 bytes antes de la codificación en Base64.
Resolución posible
Vuelve a intentarlo con un nonce más largo.
NONCE_TOO_LONG
(código de error -11)
Nota: Esto solo se informa para las solicitudes clásicas a través de IntegrityErrorCode
.
La longitud del nonce es demasiado larga. El nonce debe tener un máximo de 500 bytes antes de la codificación en Base64.
Resolución posible
Vuelve a intentarlo con un nonce más corto.
NONCE_IS_NOT_BASE64
(código de error -13)
Nota: Esto solo se informa para las solicitudes clásicas a través de IntegrityErrorCode
.
El nonce no está codificado como una cadena en Base64, segura para la Web y sin unión.
Resolución posible
Vuelve a intentarlo con un nonce en el formato correcto.
PLAY_STORE_VERSION_OUTDATED
(código de error -14)
La app de Google Play Store debe actualizarse.
Resolución posible
Pídele al usuario que actualice Google Play Store.
Consulta también
PLAY_STORE_VERSION_OUTDATED
para las solicitudes clásicas.
PLAY_SERVICES_VERSION_OUTDATED
(código de error -15)
Los Servicios de Google Play deben actualizarse.
Resolución posible
Pídele al usuario que actualice los Servicios de Google Play.
Consulta también
PLAY_SERVICES_VERSION_OUTDATED
para las solicitudes clásicas.
CLOUD_PROJECT_NUMBER_IS_INVALID
(código de error -16)
El número de proyecto de la nube proporcionado no es válido.
Resolución posible
Usa el número del proyecto de la nube para el que habilitaste la API de Play Integrity.
Consulta también
CLOUD_PROJECT_NUMBER_IS_INVALID
para las solicitudes clásicas.
REQUEST_HASH_TOO_LONG
(código de error -17)
Nota: Esto solo se informa cuando se usa la solicitud estándar a través de StandardIntegrityErrorCode
.
El requestHash
proporcionado es demasiado largo. El requestHash
debe tener menos de 500 caracteres de longitud.
Resolución posible
Vuelve a intentarlo con un requestHash
más corto.
INTEGRITY_TOKEN_PROVIDER_INVALID
(código de error -19)
Nota: Esto solo se informa para las solicitudes estándar a través de StandardIntegrityErrorCode
.
El StandardIntegrityTokenProvider
no es válido. Este código de error solo está disponible para las solicitudes a la API estándar, que son compatibles a partir de la versión 1.3.0 de la biblioteca para los lenguajes de programación Kotlin y Java, el complemento de Google Play Integrity para Unity 1.3.0 o versiones posteriores y el SDK nativo de Play Core 1.13.0 o versiones posteriores.
Resolución posible
Solicita un nuevo proveedor de tokens de integridad.
STANDARD_INTEGRITY_INITIALIZATION_NEEDED
(código de error -101)
No se inicializó StandardIntegrityManager
.
Resolución posible
Primero, llama a StandardIntegrityManager_init()
.
Consulta también
INTEGRITY_INITIALIZATION_NEEDED
para las solicitudes clásicas.
STANDARD_INTEGRITY_INVALID_ARGUMENT
(código de error -103)
Se pasó un argumento no válido a la API de Integrity estándar.
Resolución posible
Vuelve a intentarlo con el argumento correcto.
Consulta también
INTEGRITY_INVALID_ARGUMENT
para las solicitudes clásicas.