Tipos de errores

Categorizamos 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 el control de errores de tu app. Consulta los siguientes recursos para obtener más detalles sobre errores específicos:

  • Common Errors proporciona 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 aplicación para acceder a Google Ads en su nombre. La autenticación se administra a través de las 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 que escapan a 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 por separado 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 si vuelves a intentar la solicitud después de una breve pausa.

En el caso de las solicitudes iniciadas por el usuario, una estrategia es indicar de inmediato un error en la IU y darle al usuario la opción de reintentar la solicitud. Como alternativa, tu app podría reintentar automáticamente la solicitud primero y solo exponer el error en la IU después de alcanzar una cantidad máxima de reintentos o un tiempo de espera total del usuario.

En el caso de las solicitudes iniciadas en el backend, tu app debe reintentar automáticamente la solicitud hasta una cantidad máxima de reintentos.

Cuando reintentes las solicitudes, usa una política de retirada exponencial. Por ejemplo, si pausas 5 segundos antes del primer reintento, podrías pausar 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 una entrada para una operación no era aceptable. Por ejemplo, PolicyViolationError, DateError, DateRangeError, StringLengthError y UrlFieldError.

Los errores de validación se producen con mayor frecuencia en las solicitudes iniciadas por el usuario, en las que este ingresó datos no válidos. En estos casos, debes proporcionar un mensaje de error adecuado al usuario según el error específico de la API que recibiste. También puedes validar la entrada del usuario para detectar 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 la revise un operador humano.

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 dejar de sincronizarse con los objetos reales en Google Ads. Por ejemplo, un usuario podría borrar un grupo de anuncios directamente en Google Ads, pero la app y la base de datos local no detectan el 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.

Para las solicitudes iniciadas por el usuario, una estrategia es alertar al usuario sobre un posible problema de sincronización, iniciar de inmediato un trabajo que recupere la clase pertinente de objetos de Google Ads y actualice la base de datos local, y, luego, solicitar 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 de forma automática e incremental tu base de datos local. 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 se pueden controlar de esta manera podrían hacer que tu app inicie un trabajo de sincronización más completo o que se agregue a una fila para que un operador humano lo revise.