Gestire i codici di errore dell'API Play Integrity

Se la tua app effettua 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 con l'integrazione 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 vengono eseguite in background e non influiscono sull'esperienza utente durante la sessione.

Ad esempio, è opportuno implementare questa operazione quando si confermano nuovi acquisti, perché può avvenire in background e la conferma 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 riprovare.

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

Durante questi tentativi di ripetizione, verifica la presenza di una connessione di rete e non sovraccaricare il dispositivo.

Se continui a visualizzare errori dopo tre tentativi, considera il risultato come se il client non avesse superato tutti i controlli di integrità. L'errore può verificarsi per diversi motivi, tra cui (ma non solo): un dispositivo sovraccarico, 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

La causa di questi errori è a volte dovuta a condizioni temporanee, pertanto devi riprovare a chiamare.

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 il recupero, chiedi all'utente di verificare la connettività di rete e utilizza semplici tentativi o un 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 sta effettuando troppe richieste all'API ed è stata limitata oppure la tua app ha superato la quota giornaliera di richieste.

Possibile risoluzione

  1. Riprova con un backoff esponenziale.
  2. Richiesta di aumento del numero massimo giornaliero di richieste

Vedi anche

TOO_MANY_REQUESTS per le richieste classiche.

GOOGLE_SERVER_UNAVAILABLE (codice di errore -12)

Errore interno sconosciuto del server Google.

Possibile risoluzione

Riprova con un backoff esponenziale. Valuta la possibilità di segnalare un bug se l'operazione non riesce in modo coerente.

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 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 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. Valuta la possibilità di segnalare un bug se l'operazione non va a buon fine in modo coerente.

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'operazione non va a buon fine in modo coerente.

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'operazione non va a buon fine in modo coerente.

Vedi anche

Per le richieste classiche, consulta INTEGRITY_INITIALIZATION_FAILED.

Codici di errore non riproducibili

È improbabile che i tentativi automatici aiutino 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 a una versione supportata, un nuovo tentativo manuale dell'operazione iniziale potrebbe funzionare.

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 attivata in Google Play Console.
  • Chiedi all'utente di aggiornare il Play Store.

Vedi anche

Vedi API_NOT_AVAILABLE per la richiesta classica.

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

Vedi PLAY_STORE_NOT_FOUND per la richiesta classica.

PLAY_STORE_ACCOUNT_NOT_FOUND (codice di errore -4)

Nota:questo valore viene segnalato 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 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

Non strategico. Considera il risultato come se il client non avesse superato tutti i controlli di integrità.

Vedi anche

Vedi APP_NOT_INSTALLED per la richiesta classica.

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 Google Play Services.

Vedi anche

Vedi APP_NOT_INSTALLED per la richiesta classica.

APP_UID_MISMATCH (codice di errore -7)

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

Possibile risoluzione

Non strategico. Considera il risultato come se il client non avesse superato tutti i controlli di integrità.

Vedi anche

Vedi APP_UID_MISMATCH per la richiesta classica.

CANNOT_BIND_TO_SERVICE (codice di errore -9)

Il binding al servizio nel Play Store non è riuscito. Ciò può essere dovuto all'installazione di una vecchia versione del Play Store sul dispositivo.

Possibile risoluzione

Chiedi all'utente di aggiornare il Google Play Store.

Vedi anche

Vedi CANNOT_BIND_TO_SERVICE per la richiesta classica.

NONCE_TOO_SHORT (codice di errore -10)

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

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 segnalato 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 segnalato solo per le richieste classiche tramite IntegrityErrorCode.

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

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 il Google Play Store.

Vedi anche

Vedi PLAY_STORE_VERSION_OUTDATED per la richiesta classica.

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

Vedi PLAY_SERVICES_VERSION_OUTDATED per la richiesta classica.

CLOUD_PROJECT_NUMBER_IS_INVALID (codice di errore -16)

Il numero del progetto cloud fornito non è valido.

Possibile risoluzione

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

Vedi anche

Vedi CLOUD_PROJECT_NUMBER_IS_INVALID per la richiesta classica.

REQUEST_HASH_TOO_LONG (codice di errore -17)

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

Il 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 segnalato solo per le richieste standard tramite StandardIntegrityErrorCode.

StandardIntegrityTokenProvider non è più valido. Ciò può accadere perché il fornitore di token è scaduto o perché l'utente ha cancellato i dati dell'app Play Store, rimuovendo il fornitore di token.

Questo codice di errore è disponibile solo per le richieste API Standard, in cui è supportato a partire dalla versione 1.3.0 della libreria 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 è 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 Standard Integrity.

Possibile risoluzione

Riprova con l'argomento corretto.

Vedi anche

Consulta INTEGRITY_INVALID_ARGUMENT per le richieste classiche.