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

Si una aplicación realiza una solicitud mediante 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 ocurren en segundo plano y que no afectan la experiencia del usuario mientras este se encuentra en una sesión.

Por ejemplo, es apropiado implementar esto cuando se procesan compras nuevas, ya que esta operación puede ocurrir en segundo plano, y el reconocimiento no tiene que ocurrir 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 mediante un aumento exponencial de la demora 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 para 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 se debe a 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 retiradas exponenciales, 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. 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 forma 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

Para ver las solicitudes clásicas, consulta INTEGRITY_INTERNAL_ERROR.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (Código de error -102)

Se produjo un error cuando se inicializaba la API de Standard Integrity.

Resolución posible

Vuelve a intentarlo con una retirada exponencial. Considera informar un error si falla de manera constante.

Consulta también

Para ver las solicitudes clásicas, consulta INTEGRITY_INITIALIZATION_FAILED.

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 ayudar 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 compatible, 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 la app de Play Store.

Consulta también

Consulta API_NOT_AVAILABLE para ver la solicitud clásica.

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

Consulta PLAY_STORE_NOT_FOUND para ver la solicitud clásica.

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 carecen de compatibilidad.

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

Consulta APP_NOT_INSTALLED para ver la solicitud clásica.

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, actualice o habilite los Servicios de Play.

Consulta también

Consulta APP_NOT_INSTALLED para ver la solicitud clásica.

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

Consulta APP_UID_MISMATCH para ver la solicitud clásica.

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

Consulta CANNOT_BIND_TO_SERVICE para ver la solicitud clásica.

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 string 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)

Debes actualizar la app de Google Play Store.

Resolución posible

Pídele al usuario que actualice Google Play Store.

Consulta también

Consulta PLAY_STORE_VERSION_OUTDATED para ver la solicitud clásica.

PLAY_SERVICES_VERSION_OUTDATED (Código de error -15)

Debes actualizar los Servicios de Google Play.

Resolución posible

Pídele al usuario que actualice los servicios de Google Play.

Consulta también

Consulta PLAY_SERVICES_VERSION_OUTDATED para ver la solicitud clásica.

CLOUD_PROJECT_NUMBER_IS_INVALID (Código de error -16)

El número de proyecto de Cloud 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

Consulta CLOUD_PROJECT_NUMBER_IS_INVALID para ver la solicitud clásica.

REQUEST_HASH_TOO_LONG (Código de error -17)

Nota: 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, en las que es compatible 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

Consulta INTEGRITY_INITIALIZATION_NEEDED para ver las solicitudes clásicas

STANDARD_INTEGRITY_INVALID_ARGUMENT (Código de error -103)

Se pasó un argumento no válido a la API de Standard Integrity.

Resolución posible

Vuelve a intentarlo con el argumento correcto.

Consulta también

Consulta INTEGRITY_INVALID_ARGUMENT para las solicitudes clásicas.