Gestire i codici di errore dell'API Play Integrity

Se la tua app invia una richiesta all'API Play Integrity e la chiamata non va a buon fine, l'app riceve un codice di errore. Questi errori possono verificarsi per vari motivi, ad esempio problemi ambientali come una connessione di rete scadente, problemi di integrazione dell'API o attività dannose e attacchi attivi. Il tipo di codice di errore restituito dipende dal tipo di richiesta:

Strategie di ripetizione

Utilizza il backoff esponenziale per le operazioni di Play Integrity che si verificano in background e non influiscono sull'esperienza utente durante la sessione.

Ad esempio, è opportuno implementare questa funzionalità quando si confermano i nuovi acquisti perché questa operazione può avvenire in background e il riconoscimento non deve avvenire in tempo reale se si verifica un errore.

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

Implementa una strategia di ripetizione con un numero massimo di tentativi come condizione di uscita utilizzando ogni volta un ritardo aumentato in modo esponenziale (10 secondi, 20 secondi).

Durante l'esecuzione di questi tentativi di ripetizione, controlla la connessione di rete e non sovraccaricare il dispositivo.

Se continui a visualizzare errori dopo tre tentativi di ripetizione, considera il risultato come se il client non avesse superato tutti i controlli di integrità. L'errore può essere dovuto a diversi motivi, tra cui (a titolo esemplificativo): un dispositivo sovraccaricato, problemi di connessione di rete o un tentativo da parte di un 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 aggiuntivi dei codici di errore 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 non irreversibili

A volte la causa di questi errori è dovuta a condizioni transitorie, pertanto dovresti ritentare 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 di Google Play.

Possibile risoluzione

Per recuperare, chiedi all'utente di verificare la connettività di rete e di utilizzare tentativi di nuovo attacco semplici 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 chiamante invia troppe richieste all'API ed è stata limitata.

Possibile risoluzione

  1. Richiesta di aumento del 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 si verifica costantemente.

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 dell'API standard, questa funzionalità è supportata a partire dalla versione 1.3.0 della libreria dell'API Play Integrity per Kotlin e Java, del plug-in Google Play Integrity per Unity 1.3.0 o versioni successive e dell'SDK Play Core Native 1.13.0 o versioni successive.

Possibile risoluzione

Riprova con un backoff esponenziale.

Vedi anche

CLIENT_TRANSIENT_ERROR per le richieste classiche.

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

INTERNAL_ERROR (codice di errore -100)

Errore interno sconosciuto.

Possibile risoluzione

Riprova con un backoff esponenziale. Valuta la possibilità di segnalare un bug se l'errore si verifica costantemente.

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. Valuta la possibilità di segnalare un bug se l'errore si verifica costantemente.

Vedi anche

Per le richieste classiche, consulta 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. Valuta la possibilità di segnalare un bug se l'errore si verifica costantemente.

Vedi anche

Per le richieste classiche, consulta INTEGRITY_INITIALIZATION_FAILED.

Codici di errore non ripetibili

In questi casi è improbabile che i tentativi automatici di recupero siano utili. 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 a 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 essere disponibile. Un'altra possibilità è che l'API Integrity non sia attivata in Google Play Console.

Possibile risoluzione

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

Vedi anche

Per le richieste classiche, consulta API_NOT_AVAILABLE.

PLAY_STORE_NOT_FOUND (codice di errore -2)

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

Possibile risoluzione

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

Vedi anche

Per le richieste classiche, consulta PLAY_STORE_NOT_FOUND.

PLAY_STORE_ACCOUNT_NOT_FOUND (codice di errore -4)

Nota:questo valore viene riportato solo per le richieste classiche tramite IntegrityErrorCode.

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

Possibile risoluzione

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

APP_NOT_INSTALLED (codice di errore -5)

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

Possibile risoluzione

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

Vedi anche

Per le richieste classiche, consulta APP_NOT_INSTALLED.

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

Per le richieste classiche, consulta APP_NOT_INSTALLED.

APP_UID_MISMATCH (codice di errore -7)

L'UID (ID utente) dell'app chiamante non corrisponde a quello di Package Manager.

Possibile risoluzione

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

Vedi anche

Per le richieste classiche, consulta APP_UID_MISMATCH.

CANNOT_BIND_TO_SERVICE (codice di errore -9)

L'associazione al servizio nel Play Store non è riuscita. Questo può essere dovuto al fatto che sul dispositivo è installata una vecchia versione del Play Store.

Possibile risoluzione

Chiedi all'utente di aggiornare il Google Play Store.

Vedi anche

Per le richieste classiche, consulta CANNOT_BIND_TO_SERVICE.

NONCE_TOO_SHORT (codice di errore -10)

Nota:questo valore viene riportato solo per le richieste classiche tramiteIntegrityErrorCode.

La lunghezza del nonce è troppo breve. Il nonce deve essere di almeno 16 byte prima della codifica base64.

Possibile risoluzione

Riprova con un nonce più lungo.

NONCE_TOO_LONG (codice di errore -11)

Nota:questo valore viene riportato 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 valore viene riportato solo per le richieste classiche tramite IntegrityErrorCode.

Il nonce non è codificato come stringa sicura per il web senza a capo in base64.

Possibile risoluzione

Riprova con un nonce nel formato corretto.

PLAY_STORE_VERSION_OUTDATED (codice di errore -14)

È necessario aggiornare l'app Google Play Store.

Possibile risoluzione

Chiedi all'utente di aggiornare il Google Play Store.

Vedi anche

Per le richieste classiche, consulta PLAY_STORE_VERSION_OUTDATED.

PLAY_SERVICES_VERSION_OUTDATED (codice di errore -15)

È necessario aggiornare Google Play Services.

Possibile risoluzione

Chiedi all'utente di aggiornare Google Play Services.

Vedi anche

Per le richieste classiche, consulta PLAY_SERVICES_VERSION_OUTDATED.

CLOUD_PROJECT_NUMBER_IS_INVALID (codice di errore -16)

Il numero del progetto cloud fornito non è valido.

Possibile risoluzione

Utilizza il numero del progetto Cloud per il progetto Cloud per cui hai attivato l'API Play Integrity.

Vedi anche

Per le richieste classiche, consulta CLOUD_PROJECT_NUMBER_IS_INVALID.

REQUEST_HASH_TOO_LONG (codice di errore -17)

Nota:questo errore viene segnalato solo quando si utilizza la richiesta standard tramite StandardIntegrityErrorCode.

Il valore requestHash fornito è troppo lungo. La lunghezza di 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 valore viene riportato solo per le richieste standard tramiteStandardIntegrityErrorCode.

Il valore StandardIntegrityTokenProvider non è valido. Questo codice di errore è disponibile solo per le richieste dell'API standard, dove è supportato 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 dall'SDK Play Core Native 1.13.0 o versioni successive.

Possibile risoluzione

Richiedi un nuovo fornitore 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

Consulta INTEGRITY_INITIALIZATION_NEEDED per le richieste classiche

STANDARD_INTEGRITY_INVALID_ARGUMENT (codice di errore -103)

Argomento non valido passato all'API Integrity standard.

Possibile risoluzione

Riprova con l'argomento corretto.

Vedi anche

Consulta INTEGRITY_INVALID_ARGUMENT per le richieste classiche.