Tipos de errores

Clasificamos los errores en las siguientes categorías:

  • Autenticación
  • Reintentable
  • Validación
  • Relacionado con la sincronización

Si bien estas categorías no abarcan todos los errores posibles y algunas pueden caber en más de una categoría, pueden servir como punto de partida para estructurar el manejo de errores de tu app. Consulta la sección Errores comunes para obtener más detalles sobre un error en particular.

Errores de autenticación

La autenticación alude a que un usuario otorgó permiso a tu app para acceder a Google Ads en su nombre. La autenticación se administra mediante credenciales generadas por el flujo de OAuth2.

El motivo más común por el que se produce un error de autenticación a causa de factores ajenos 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 independientes de Google Ads 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 a tu app en cualquier momento. Según cuándo se revocó tu acceso, la API puede mostrar directamente un error AuthenticationError.OAUTH_TOKEN_REVOKED, o los objetos de credenciales integrados de las bibliotecas cliente pueden generar una excepción de token revocado. En cualquier caso, si tu app tiene una IU para tus clientes, podría solicitarles que reinicien el flujo de OAuth2 a fin de restablecer el permiso de la 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 podría resolverse al reintentar 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 volver a intentar ejecutar la solicitud automáticamente, solo exponer el error en la IU después de alcanzar una cantidad máxima de reintentos o el tiempo total de espera del usuario.

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

Cuando reintentes las solicitudes, usa una política de retirada exponencial. Por ejemplo, si haces una pausa 5 segundos antes del primer reintento, puedes pausar 10 segundos después del segundo y 20 segundos después del tercer. La retirada exponencial ayuda a garantizar que no llames a la API de forma muy agresiva.

Errores de validación

Los errores de validación indican que una entrada a una operación no fue aceptable. Por ejemplo, PolicyViolationError, DateError, DateRangeError, StringLengthError y UrlFieldError.

Los errores de validación suelen producirse en solicitudes iniciadas por el usuario, en las que un usuario ingresó una entrada no válida. En estos casos, debes proporcionar un mensaje de error apropiado 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 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 con errores a una cola para que la revise un operador humano.

Muchas aplicaciones de Google Ads mantienen una base de datos local para almacenar sus objetos de Google Ads. Un desafío para este enfoque es que la base de datos local puede no estar sincronizada con los objetos reales en Google Ads. Por ejemplo, un usuario puede borrar un grupo de anuncios directamente en Google Ads, pero la aplicación y la base de datos local no conocen 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.

En el caso de las solicitudes que inicia el usuario, una estrategia consiste en alertar al usuario sobre un posible problema de sincronización, iniciar de inmediato un trabajo que recupera la clase relevante de objetos de Google Ads y actualizar la base de datos local. Luego, pídele al usuario que actualice la IU.

En el caso de las solicitudes de backend, algunos errores proporcionan suficiente información para que la app corrija de forma automática y 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 puedes manejar de esta manera podrían hacer que tu app inicie un trabajo de sincronización más completo o que se agregue a una cola para que un operador humano la revise.