Controla los códigos de error de la API de Play Integrity

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:

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

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

Valores de códigos de error adicionales de la biblioteca nativa

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

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

  1. Realiza una solicitud para aumentar la cantidad máxima diaria de solicitudes.
  2. 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.