Tipos de errores

Hemos categorizado los errores en las siguientes categorías amplias:

  • 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 Errores comunes para obtener más detalles sobre un error en particular.

Errores de autenticación

La autenticación se refiere a si la app tiene permiso de un usuario para acceder a Google Ads en su nombre. La autenticación se administra a través de credenciales generadas por el flujo de OAuth2.

La razón más común por la que se produce un error de autenticación debido a factores ajenos a tu control es que el usuario autenticado revocó el permiso que le dio 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 de tu app en cualquier momento. Según cuándo se haya revocado el acceso, la API puede mostrar directamente un error AuthenticationError.OAUTH_TOKEN_REVOKED, o los objetos de credenciales integrados en las bibliotecas cliente pueden generar una excepción revocada del token. En cualquier caso, si tu app tiene una IU para tus clientes, podría pedirles que reinicien el flujo de OAuth2 a fin de restablecer el permiso de tu app para actuar en su nombre.

Errores que se pueden volver a intentar

Algunos errores, como INTERNAL_ERROR, pueden indicar un problema temporal que se puede resolver si vuelves a realizar la solicitud después de una breve pausa.

Para las solicitudes iniciadas por el usuario, una estrategia es indicar de inmediato un error en tu IU y darle al usuario la opción de activar un reintento. Como alternativa, tu app podría reintentar la solicitud de manera automática y 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 iniciadas en el backend, la app debe reintentar la solicitud automáticamente hasta una cantidad máxima de reintentos.

Cuando vuelvas a intentar las solicitudes, usa una política de retirada exponencial. Por ejemplo, si haces una pausa 5 segundos antes del primer reintento, puedes pausarlo 10 segundos después del segundo y 20 segundos después del tercer intento. La retirada exponencial ayuda a garantizar que no llames a la API con mucha fuerza.

Errores de validación

Los errores de validación indican que no se aceptó una entrada de una operación. 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 un usuario ingresó una entrada no válida. En estos casos, debes proporcionar un mensaje de error apropiado al usuario según el error de API específico que recibiste. También puedes validar la entrada del usuario para 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 están al tanto del cambio y continúan 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 de un posible problema de sincronización, iniciar de inmediato un trabajo que recupere la clase relevante de objetos de Google Ads y actualizar la base de datos local, y luego pedirle 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 progresiva la 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 pueden 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.