Clasificamos los errores en las siguientes categorías generales:
- Autenticación
- Se puede volver a intentar
- Validación
- Relacionados con la sincronización
Si bien estas categorías no abarcan todos los errores posibles y algunos pueden encajar en más de una categoría, pueden servir como punto de partida para estructurar la administración de errores de tu app. Consulta los siguientes recursos para obtener más detalles sobre errores específicos:
- En Errores comunes, se proporcionan más detalles sobre un error en particular.
- google.rpc.Status para obtener detalles sobre el modelo de error lógico que usa la API.
Errores de autenticación
La autenticación se refiere a si un usuario le otorgó permiso a tu app para acceder a Google Ads en su nombre. La autenticación se administra a través de credenciales generadas por el flujo de OAuth2.
El motivo más común por el que se produce un error de autenticación debido a factores fuera de tu control es que el usuario autenticado revocó el permiso que le otorgó a tu app para actuar en su nombre. Por ejemplo, si tu app administra cuentas de Google Ads independientes para clientes independientes y se autentica de forma independiente como cada cliente cuando administra la cuenta de ese cliente, un cliente podría revocar el acceso de tu app en cualquier momento. Según el momento en que se revocó tu acceso, es posible que la API muestre directamente un error AuthenticationError.OAUTH_TOKEN_REVOKED
o que los objetos de credenciales integrados en las bibliotecas cliente arrojen una excepción de token revocado. En cualquier caso, si tu app tiene una IU para tus clientes, podría pedirles que reinicien el flujo de OAuth2 para restablecer el permiso de tu app para actuar en su nombre.
Errores que se pueden volver a intentar
Algunos errores, como TRANSIENT_ERROR
o INTERNAL_ERROR
, pueden indicar un problema temporal que se puede resolver volviendo a intentar la solicitud después de una breve pausa.
En el caso de las solicitudes que inicia el usuario, una estrategia es indicar de inmediato un error en la IU y darle al usuario la opción de activar un reintento. Como alternativa, tu app podría reintentarlo automáticamente primero, y solo exponer el error en la IU después de alcanzar una cantidad máxima de reintentos o el tiempo de espera total del usuario.
En el caso de las solicitudes que se inician en el backend, tu app debe reintentar la solicitud automáticamente hasta una cantidad máxima de reintentos.
Cuando reintentes las solicitudes, usa una política de retirada exponencial. Por ejemplo, si primero haces una pausa 5 segundos antes del primer reintento, puedes hacer una pausa 10 segundos después del segundo y 20 segundos después del tercer reintento. La retirada exponencial ayuda a garantizar que no llames a la API de forma demasiado agresiva.
Errores de validación
Los errores de validación indican que no se pudo aceptar una entrada para una operación.
Por ejemplo, PolicyViolationError
,
DateError
,
DateRangeError
,
StringLengthError
y
UrlFieldError
.
Los errores de validación suelen ocurrir en las solicitudes que inicia el usuario, en las que este ingresó una entrada no válida. En estos casos, debes proporcionarle al usuario un mensaje de error apropiado según el error específico de la API que recibiste. También puedes validar las entradas del usuario en busca de errores comunes antes de realizar una llamada a la API, lo que hace que tu app sea más responsiva y que el uso de la API sea más eficiente. En el caso de las solicitudes del backend, tu app podría agregar la operación fallida a una fila para que un operador humano la revise.
Errores relacionados con la sincronización
Muchas apps de Google Ads mantienen una base de datos local para almacenar sus objetos de Google Ads. Un desafío de este enfoque es que la base de datos local puede desincronizarse con los objetos reales en Google Ads. Por ejemplo, un usuario puede borrar un grupo de anuncios directamente en Google Ads, pero la app y la base de datos local no están al tanto del cambio y siguen emitiendo llamadas a la API como si el grupo de anuncios existiera. Estos problemas de sincronización pueden manifestarse como una variedad de errores, como DUPLICATE_CAMPAIGN_NAME
, DUPLICATE_ADGROUP_NAME
, AD_NOT_UNDER_ADGROUP
, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
y muchos otros.
En el caso de las solicitudes que inicia el usuario, una estrategia es alertar al usuario sobre un posible problema de sincronización, iniciar de inmediato una tarea que recupere la clase relevante de objetos de Google Ads y actualice la base de datos local, y, luego, solicitarle al usuario que actualice la IU.
En el caso de las solicitudes de backend, algunos errores proporcionan suficiente información para que tu app corrija tu base de datos local de forma automática e incremental. Por ejemplo, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
debería hacer que tu app marque ese anuncio como quitado en tu base de datos local. Los errores que no puedas controlar de esta manera podrían hacer que tu app inicie una tarea de sincronización más completa o se agregue a una fila para que la revise un operador humano.