Gestire i codici di errore dell'API Play Integrity

Se un'applicazione invia una richiesta utilizzando l'API Play Integrity e la chiamata non va a buon fine, viene restituito un codice di errore. Il tipo di codice di errore restituito dipende dal tipo di richiesta:

Strategie per i nuovi tentativi

Ti consigliamo di utilizzare il backoff esponenziale per le operazioni di Play Integrity che si verificano in background e non influiscono sull'esperienza utente mentre l'utente è nella sessione.

Ad esempio, è opportuno implementarla quando si confermano i nuovi acquisti, perché questa operazione può avvenire in background e la conferma non deve necessariamente avvenire in tempo reale se si verifica un errore.

Dopo il primo errore, inizia con un ritardo iniziale di 5 secondi prima di riprovare.

Implementare una strategia per i nuovi tentativi con un numero massimo di tentativi come condizione di uscita utilizzando ogni volta un ritardo aumentato esponenzialmente (10, 20 secondi).

Durante questi tentativi, controlla la connessione di rete e non sovraccaricare il dispositivo.

Se continui a visualizzare errori dopo tre nuovi tentativi, considera il risultato come se il client non abbia superato tutti i controlli di integrità. L'errore può essere causato da diversi motivi, inclusi, a titolo esemplificativo, un dispositivo sovraccarico, problemi di connessione di rete o un tentativo da parte di un utente malintenzionato.

Valori dei codici di errore per la libreria 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

Valori dei codici di errore aggiuntivi per la libreria 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

Codici di errore ripetibili

La causa di questi errori è talvolta dovuta a condizioni temporanee, perciò devi riprovare a effettuare la chiamata.

NETWORK_ERROR (codice di errore -3)

Questo errore indica che si è verificato un problema con la connessione di rete tra il dispositivo e i sistemi Google Play.

Possibile risoluzione

Per eseguire il ripristino, chiedi all'utente di verificare la connettività di rete e utilizza semplici nuovi tentativi o backoff esponenziale, a seconda dell'azione che ha attivato l'errore.

Vedi anche

NETWORK_ERROR per le richieste classiche.

TOO_MANY_REQUESTS (codice di errore -8)

L'app di chiamata sta inviando troppe richieste all'API ed è stata limitata.

Possibile risoluzione

  1. Richiedi di aumentare il numero massimo giornaliero di richieste
  2. Riprova con un backoff esponenziale.

Vedi anche

TOO_MANY_REQUESTS per le richieste classiche.

GOOGLE_SERVER_UNAVAILABLE (codice di errore -12)

Errore interno del server Google sconosciuto.

Possibile risoluzione

Riprova con un backoff esponenziale. Valuta la possibilità di segnalare un bug se il problema persiste.

Vedi anche

GOOGLE_SERVER_UNAVAILABLE per le richieste classiche.

CLIENT_TRANSIENT_ERROR (codice di errore -18)

Si è verificato un errore temporaneo sul dispositivo client.

Per le richieste API standard, questa funzionalità è supportata a partire dalla versione 1.3.0 della libreria API Play Integrity per Kotlin e Java, del plug-in di Google Play Integrity per Unity 1.3.0 o successive e dell'SDK nativo della libreria di base Play 1.13.0 o versioni successive.

Possibile risoluzione

Riprova con un backoff esponenziale.

Vedi anche

CLIENT_TRANSIENT_ERROR per le richieste classiche.

Nota: quando viene segnalato durante l'utilizzo di una richiesta API classica, il valore restituito è -17.

INTERNAL_ERROR (codice di errore -100)

Errore interno sconosciuto.

Possibile risoluzione

Riprova con un backoff esponenziale. Considera la possibilità di segnalare un bug se il problema persiste.

Vedi anche

INTERNAL_ERROR per le richieste classiche.

STANDARD_INTEGRITY_INTERNAL_ERROR (codice di errore -100)

Errore interno sconosciuto.

Possibile risoluzione

Riprova con un backoff esponenziale. Considera la possibilità di segnalare un bug se il problema persiste.

Vedi anche

Per le richieste classiche, visita la pagina INTEGRITY_INTERNAL_ERROR.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (codice di errore -102)

Si è verificato un errore durante l'inizializzazione dell'API Standard Integrity.

Possibile risoluzione

Riprova con un backoff esponenziale. Considera la possibilità di segnalare un bug se il problema persiste.

Vedi anche

Per le richieste classiche, visita la pagina INTEGRITY_INITIALIZATION_FAILED.

Codici di errore non irreversibili

I tentativi automatici non sono di aiuto in questi casi. Tuttavia, un nuovo tentativo manuale potrebbe essere utile se l'utente risolve la condizione che ha causato il problema. Ad esempio, se l'utente aggiorna la versione del Play Store con una versione supportata, potrebbe funzionare un nuovo tentativo manuale dell'operazione iniziale.

API_NOT_AVAILABLE (codice di errore -1)

La versione del Play Store installata sul dispositivo potrebbe essere precedente e l'API Integrity non è disponibile. Un'altra possibilità è che l'API Integrity non sia abilitata in Google Play Console.

Possibile risoluzione

  • Assicurati che l'API Integrity sia abilitata in Google Play Console.
  • Chiedi all'utente di aggiornare il Play Store.

Vedi anche

Visita la pagina API_NOT_AVAILABLE per le richieste classiche.

PLAY_STORE_NOT_FOUND (codice di errore -2)

Sul dispositivo non è stata trovata alcuna app ufficiale del Play Store.

Possibile risoluzione

Chiedi all'utente di installare o attivare il Google Play Store.

Vedi anche

Visita la pagina PLAY_STORE_NOT_FOUND per le richieste classiche.

PLAY_STORE_ACCOUNT_NOT_FOUND (codice di errore -4)

Nota: questo dato viene registrato solo per le richieste classiche tramite IntegrityErrorCode.

Nessun account Play Store trovato sul dispositivo. Tieni presente che ora l'API Play Integrity supporta le richieste non autenticate. Questo codice di errore è usato solo per le versioni precedenti del Play Store che non sono supportate.

Possibile risoluzione

Chiedi all'utente di eseguire l'aggiornamento e accedere al Google Play Store.

APP_NOT_INSTALLED (codice di errore -5)

L'app per le chiamate non è installata. Si è verificato un problema (probabilmente un attacco).

Possibile risoluzione

Nessuna azione. Tratta il risultato come se il client non avesse superato tutti i controlli di integrità.

Vedi anche

Visita la pagina APP_NOT_INSTALLED per le richieste classiche.

PLAY_SERVICES_NOT_FOUND (codice di errore -6)

Play Services non è disponibile o deve essere aggiornato.

Possibile risoluzione

Chiedi all'utente di installare, aggiornare o attivare Play Services.

Vedi anche

Visita la pagina APP_NOT_INSTALLED per le richieste classiche.

APP_UID_MISMATCH (codice di errore -7)

L'UID (ID utente) dell'app per le chiamate non corrisponde a quello di Gestione pacchetti.

Possibile risoluzione

Nessuna azione. Tratta il risultato come se il client non avesse superato tutti i controlli di integrità.

Vedi anche

Visita la pagina APP_UID_MISMATCH per le richieste classiche.

CANNOT_BIND_TO_SERVICE (codice di errore -9)

Associazione al servizio nel Play Store non riuscita. Ciò può essere dovuto all'installazione di una versione precedente del Play Store sul dispositivo.

Possibile risoluzione

Chiedi all'utente di aggiornare Google Play Store.

Vedi anche

Visita la pagina CANNOT_BIND_TO_SERVICE per le richieste classiche.

NONCE_TOO_SHORT (codice di errore -10)

Nota: questo dato viene registrato solo per le richieste classiche tramite IntegrityErrorCode.

La lunghezza del nonce è troppo breve. Il nonce deve avere una dimensione minima di 16 byte prima della codifica Base64.

Possibile risoluzione

Riprova con un nonce più lungo.

NONCE_TOO_LONG (codice di errore -11)

Nota: questo dato viene registrato solo per le richieste classiche tramite IntegrityErrorCode.

La lunghezza del nonce è troppo lunga. Il nonce deve essere inferiore a 500 byte prima della codifica Base64.

Possibile risoluzione

Riprova con un nonce più breve.

NONCE_IS_NOT_BASE64 (codice di errore -13)

Nota: questo dato viene registrato solo per le richieste classiche tramite IntegrityErrorCode.

Il nonce non è codificato come stringa senza wrapping Base64 sicura per il web.

Possibile risoluzione

Riprova con un nonce nel formato corretto.

PLAY_STORE_VERSION_OUTDATED (codice di errore -14)

L'app Google Play Store deve essere aggiornata.

Possibile risoluzione

Chiedi all'utente di aggiornare Google Play Store.

Vedi anche

Visita la pagina PLAY_STORE_VERSION_OUTDATED per le richieste classiche.

PLAY_SERVICES_VERSION_OUTDATED (codice di errore -15)

Google Play Services deve essere aggiornato.

Possibile risoluzione

Chiedi all'utente di aggiornare Google Play Services.

Vedi anche

Visita la pagina PLAY_SERVICES_VERSION_OUTDATED per le richieste classiche.

CLOUD_PROJECT_NUMBER_IS_INVALID (codice di errore -16)

Il numero di progetto cloud fornito non è valido.

Possibile risoluzione

Utilizza il numero di progetto Cloud per il progetto Cloud per cui hai abilitato l'API Play Integrity.

Vedi anche

Visita la pagina CLOUD_PROJECT_NUMBER_IS_INVALID per le richieste classiche.

REQUEST_HASH_TOO_LONG (codice di errore -17)

Nota: questo valore viene fornito solo quando si utilizza la richiesta standard tramite StandardIntegrityErrorCode.

Il valore requestHash fornito è troppo lungo. La lunghezza del campo requestHash deve essere inferiore a 500 caratteri.

Possibile risoluzione

Riprova con un requestHash più breve.

INTEGRITY_TOKEN_PROVIDER_INVALID (codice di errore -19)

Nota: questo viene fornito solo per le richieste standard tramite StandardIntegrityErrorCode.

StandardIntegrityTokenProvider non valido. Questo codice di errore è disponibile solo per le richieste API standard, dove è supportato a partire dalla versione della libreria 1.3.0 per i linguaggi di programmazione Kotlin e Java, dal plug-in Google Play Integrity per Unity 1.3.0 o versioni successive e da Play Core Native SDK 1.13.0 o versioni successive.

Possibile risoluzione

Richiedi un nuovo provider di token di integrità.

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (codice di errore -101)

StandardIntegrityManager non è stato inizializzato.

Possibile risoluzione

Chiama prima il numero StandardIntegrityManager_init().

Vedi anche

Per le richieste classiche, vedi INTEGRITY_INITIALIZATION_NEEDED

STANDARD_INTEGRITY_INVALID_ARGUMENT (codice di errore -103)

Argomento non valido passato all'API Standard Integrity.

Possibile risoluzione

Riprova con l'argomento corretto.

Vedi anche

Per le richieste classiche, vedi INTEGRITY_INVALID_ARGUMENT.