Abbiamo suddiviso gli errori nelle seguenti categorie generali:
- Autenticazione
- Retryable
- Convalida
- Relativi alla sincronizzazione
Sebbene queste categorie non comprendano tutti gli errori possibili e alcuni possano rientrare in più di una categoria, possono comunque servire da punto di partenza per strutturare la gestione degli errori dell'app. Per ulteriori dettagli su errori specifici, consulta le seguenti risorse:
- La sezione Errori comuni fornisce maggiori dettagli su un errore specifico.
- google.rpc.Status per i dettagli sul modello di errore logico utilizzato dall'API.
Errori di autenticazione
L'autenticazione si riferisce al fatto che un utente abbia concesso alla tua app l'autorizzazione ad accedere a Google Ads per suo conto. L'autenticazione viene gestita tramite le credenziali generate dal flusso OAuth2.
Il motivo più comune per cui si verifica un errore di autenticazione dovuto a fattori al di fuori del tuo
controllo è che l'utente autenticato ha revocato l'autorizzazione concessa alla tua
app per agire per suo conto. Ad esempio, se la tua app gestisce account Google Ads separati per clienti indipendenti e si autentica separatamente come ogni cliente quando gestisce l'account di quel cliente, un cliente può revocare l'accesso alla tua app in qualsiasi momento. A seconda di quando è stato revocato l'accesso, l'API potrebbe restituire direttamente
un errore AuthenticationError.OAUTH_TOKEN_REVOKED
oppure gli oggetti delle credenziali integrate
nelle librerie client potrebbero generare
un'eccezione di revoca del token. In entrambi i casi, se la tua app ha un'interfaccia utente per i tuoi clienti,
potrebbe chiedere loro di riavviare il flusso OAuth2 per ristabilire l'autorizzazione
della tua app ad agire per loro conto.
Errori non irreversibili
Alcuni errori, come TRANSIENT_ERROR
o INTERNAL_ERROR
,
possono indicare un problema temporaneo che può essere risolto riprovando a inviare la
richiesta dopo una breve pausa.
Per le richieste avviate dall'utente, una strategia consiste nell'indicare immediatamente un errore nell'interfaccia utente e offrire all'utente la possibilità di attivare un nuovo tentativo. In alternativa, la tua app potrebbe prima riprovare automaticamente la richiesta, mostrando l'errore nell'interfaccia utente solo dopo aver raggiunto un numero massimo di tentativi o un tempo di attesa totale per l'utente.
Per le richieste avviate nel backend, l'app deve riprovare automaticamente a inviare la richiesta fino a un numero massimo di tentativi.
Quando riprovi a inviare le richieste, utilizza un criterio di backoff esponenziale. Ad esempio, se metti in pausa per 5 secondi prima del primo tentativo, potresti mettere in pausa per 10 secondi dopo il secondo e per 20 secondi dopo il terzo tentativo. Il backoff esponenziale ti aiuta a non chiamare l'API in modo troppo aggressivo.
Errori di convalida
Gli errori di convalida indicano che un input di un'operazione non era accettabile.
Ad esempio, PolicyViolationError
,
DateError
,
DateRangeError
,
StringLengthError
e
UrlFieldError
.
Gli errori di convalida si verificano più comunemente nelle richieste avviate dagli utenti, in cui un utente ha inserito un input non valido. In questi casi, devi fornire un messaggio di errore appropriato all'utente in base all'errore API specifico che hai ricevuto. Puoi anche convalidare l'input dell'utente per errori comuni prima di effettuare una chiamata API, rendendo la tua app più reattiva e l'utilizzo dell'API più efficiente. Per le richieste dal backend, la tua app potrebbe aggiungere l'operazione non riuscita a una coda per la revisione da parte di un operatore.
Errori relativi alla sincronizzazione
Molte app Google Ads gestiscono un database locale per archiviare i propri oggetti Google Ads. Una
sfida di questo approccio è che il database locale potrebbe non essere sincronizzato con
gli oggetti effettivi in Google Ads. Ad esempio, un utente potrebbe eliminare un gruppo di annunci
direttamente in Google Ads, ma l'app e il database locale non sono a conoscenza della modifica e
continuano a effettuare chiamate API come se il gruppo di annunci esistesse. Questi problemi di sincronizzazione possono
manifestarsi come una serie di errori, ad esempio DUPLICATE_CAMPAIGN_NAME
,
DUPLICATE_ADGROUP_NAME
,
AD_NOT_UNDER_ADGROUP
,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
e molti altri.
Per le richieste avviate dall'utente, una strategia consiste nell'avvisare l'utente di un possibile problema di sincronizzazione, avviare immediatamente un job che recupera la classe pertinente di oggetti Google Ads e aggiorna il database locale, quindi chiedere all'utente di aggiornare la UI.
Per le richieste di backend, alcuni errori forniscono informazioni sufficienti per consentire alla tua
app di correggere automaticamente e in modo incrementale il database locale. Ad esempio,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
dovrebbe far sì che la tua app contrassegni l'annuncio come
rimosso nel tuo database locale. Gli errori che non puoi gestire in questo modo potrebbero
far sì che la tua app avvii un job di sincronizzazione più completo o venga aggiunta a una coda per la
revisione da parte di un operatore umano.