Types d'erreurs

Nous avons classé les erreurs dans les grandes catégories suivantes :

  • Authentification
  • Récupérable
  • Validation
  • Problèmes liés à la synchronisation

Bien que ces catégories n'englobent pas toutes les erreurs possibles et que certaines puissent appartenir à plusieurs catégories, elles peuvent néanmoins servir de point de départ pour structurer la gestion des erreurs de votre application. Pour en savoir plus sur des erreurs spécifiques, consultez les ressources suivantes :

  • La section Erreurs courantes fournit plus de détails sur une erreur spécifique.
  • google.rpc.Status pour en savoir plus sur le modèle d'erreur logique utilisé par l'API.

Erreurs d'authentification

L'authentification fait référence à l'autorisation accordée par un utilisateur à votre application pour accéder à Google Ads en son nom. L'authentification est gérée à l'aide d'identifiants générés par le flux OAuth2.

La raison la plus courante d'une erreur d'authentification liée à des facteurs indépendants de votre volonté est que l'utilisateur authentifié a révoqué l'autorisation qu'il avait accordée à votre application d'agir en son nom. Par exemple, si votre application gère des comptes Google Ads distincts pour des clients indépendants et s'authentifie séparément en tant que chaque client lorsqu'elle gère le compte de ce client, un client peut révoquer l'accès de votre application à tout moment. Selon le moment où votre accès a été révoqué, l'API peut renvoyer directement une erreur AuthenticationError.OAUTH_TOKEN_REVOKED, ou les objets d'identifiants intégrés dans les bibliothèques clientes peuvent générer une exception de jeton révoqué. Dans les deux cas, si votre application dispose d'une UI pour vos clients, elle peut leur demander de relancer le flux OAuth2 pour rétablir l'autorisation de votre application à agir en leur nom.

Erreurs récupérables

Certaines erreurs, telles que TRANSIENT_ERROR ou INTERNAL_ERROR, peuvent indiquer un problème temporaire qui peut être résolu en relançant la requête après une courte pause.

Pour les requêtes initiées par l'utilisateur, une stratégie consiste à indiquer immédiatement une erreur dans votre UI et à donner à l'utilisateur la possibilité de déclencher une nouvelle tentative. Vous pouvez également faire en sorte que votre application relance automatiquement la requête en premier lieu, et n'affiche l'erreur dans l'UI qu'après avoir atteint un nombre maximal de tentatives ou un temps d'attente total de l'utilisateur.

Pour les requêtes initiées sur le backend, votre application doit relancer automatiquement la requête jusqu'à un nombre maximal de tentatives.

Lorsque vous relancez des requêtes, utilisez une stratégie d'intervalle exponentiel entre les tentatives. Par exemple, si vous faites une pause de cinq secondes avant la première nouvelle tentative, vous pouvez faire une pause de 10 secondes après la deuxième et de 20 secondes après la troisième. L'intervalle exponentiel entre les tentatives permet de s'assurer que vous n'appelez pas l'API de manière trop agressive.

Erreurs de validation

Les erreurs de validation indiquent qu'une entrée d'une opération n'était pas acceptable. Par exemple, PolicyViolationError, DateError, DateRangeError, StringLengthError et UrlFieldError.

Les erreurs de validation se produisent le plus souvent dans les requêtes initiées par l'utilisateur, lorsqu'il a saisi des données non valides. Dans ce cas, vous devez fournir à l'utilisateur un message d'erreur approprié en fonction de l'erreur d'API spécifique que vous avez reçue. Vous pouvez également valider les entrées utilisateur pour détecter les erreurs courantes avant d'effectuer un appel d'API, ce qui rend votre application plus réactive et votre utilisation de l'API plus efficace. Pour les requêtes provenant du backend, votre application peut ajouter l'opération ayant échoué à une file d'attente pour qu'un opérateur humain l'examine.

De nombreuses applications Google Ads gèrent une base de données locale pour stocker leurs objets Google Ads. L'un des défis de cette approche est que la base de données locale peut se désynchroniser des objets réels dans Google Ads. Par exemple, un utilisateur peut supprimer un groupe d'annonces directement dans Google Ads, mais l'application et la base de données locale ne sont pas au courant de la modification et continuent d'émettre des appels d'API comme si le groupe d'annonces existait. Ces problèmes de synchronisation peuvent se manifester sous la forme de diverses erreurs, telles que DUPLICATE_CAMPAIGN_NAME, DUPLICATE_ADGROUP_NAME, AD_NOT_UNDER_ADGROUP, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD et bien d'autres.

Pour les requêtes initiées par l'utilisateur, une stratégie consiste à alerter l'utilisateur sur un éventuel problème de synchronisation, à lancer immédiatement un job qui récupère la classe d'objets Google Ads concernée et met à jour la base de données locale, puis à inviter l'utilisateur à actualiser l'UI.

Pour les requêtes de backend, certaines erreurs fournissent suffisamment d'informations pour que votre application corrige automatiquement et progressivement votre base de données locale. Par exemple, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD doit entraîner le marquage de cette annonce comme supprimée dans votre base de données locale par votre application. Les erreurs que vous ne pouvez pas gérer de cette manière peuvent entraîner le lancement d'une tâche de synchronisation plus complète par votre application ou son ajout à une file d'attente pour qu'un opérateur humain l'examine.