Tipos de erro

Classificamos os erros nas seguintes categorias amplas:

  • Autenticação
  • Repetível
  • Dados
  • Relacionado à sincronização

Embora essas categorias não abram todos os erros possíveis e alguns possam se encaixar em mais de uma categoria, elas podem servir como ponto de partida para estruturar o tratamento de erros do app. Consulte a documentação Erros comuns para conferir mais detalhes sobre um erro específico.

Erros de autenticação

A autenticação informa se o app recebeu permissão de um usuário para acessar o Google Ads em nome dele. A autenticação é gerenciada por meio de credenciais geradas pelo fluxo do OAuth2.

O motivo mais comum para o surgimento de um erro de autenticação devido a fatores fora do seu controle é que o usuário autenticado revogou a permissão que concedeu ao app para agir em nome dele. Por exemplo, se o app gerencia contas separadas do Google Ads para clientes independentes e faz a autenticação separadamente ao gerenciar a conta de cada cliente, ele pode revogar o acesso do app a qualquer momento. Dependendo de quando o acesso foi revogado, a API pode retornar diretamente um erro AuthenticationError.OAUTH_TOKEN_REVOKED, ou os objetos de credencial integrados nas bibliotecas de cliente podem gerar uma exceção de token revogado. Em ambos os casos, se o app tiver uma interface para os clientes, ele poderá solicitar que o fluxo OAuth2 seja reiniciado para restabelecer a permissão do app para agir em nome deles.

Erros que permitem uma nova tentativa

Alguns erros, como TRANSIENT_ERROR ou INTERNAL_ERROR, podem indicar um problema temporário que pode ser resolvido repetindo a solicitação após uma breve pausa.

Para solicitações iniciadas pelo usuário, uma estratégia é indicar imediatamente um erro na interface e dar ao usuário a opção de acionar uma nova tentativa. Como alternativa, o app pode repetir automaticamente a solicitação, expondo o erro na interface somente depois de atingir um número máximo de tentativas ou o tempo de espera total do usuário.

Para solicitações iniciadas no back-end, seu app precisa repetir automaticamente a solicitação até um número máximo de novas tentativas.

Ao repetir solicitações, use uma política de espera exponencial. Por exemplo, se você pausar 5 segundos antes da primeira tentativa, poderá pausar 10 segundos após a segunda e 20 segundos após a terceira, O backoff exponencial ajuda a garantir que você não chame a API de maneira muito rigorosa.

Erros de validação

Erros de validação indicam que a entrada de uma operação não foi aceitável. Por exemplo, PolicyViolationError, DateError, DateRangeError, StringLengthError e UrlFieldError.

Os erros de validação ocorrem com mais frequência em solicitações iniciadas pelo usuário, em que ele digita uma entrada inválida. Nesses casos, forneça uma mensagem de erro apropriada ao usuário com base no erro específico da API que você recebeu. Também é possível validar a entrada do usuário para erros comuns antes de fazer uma chamada de API, tornando o app mais responsivo e o uso da API mais eficiente. Para solicitações do back-end, seu app pode adicionar a operação com falha a uma fila para a análise de um operador humano.

Muitos apps do Google Ads têm um banco de dados local para armazenar os objetos do Google Ads. Um desafio dessa abordagem é que o banco de dados local pode não estar sincronizado com os objetos reais no Google Ads. Por exemplo, um usuário pode excluir um grupo de anúncios diretamente no Google Ads, mas o aplicativo e o banco de dados local não estão cientes da mudança e continuam a emitir chamadas de API como se o grupo de anúncios existisse. Esses problemas de sincronização podem se manifestar como vários erros, como DUPLICATE_CAMPAIGN_NAME, DUPLICATE_ADGROUP_NAME, AD_NOT_UNDER_ADGROUP, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD e muitos outros.

No caso de solicitações iniciadas pelo usuário, uma estratégia é alertar o usuário sobre um possível problema de sincronização, iniciar imediatamente uma tarefa que recupera a classe relevante de objetos do Google Ads e atualizar o banco de dados local e, em seguida, solicitar que o usuário atualize a IU.

No caso de solicitações de back-end, alguns erros fornecem informações suficientes para que o app corrija de forma automática e incremental o banco de dados local. Por exemplo, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD precisa fazer com que o app marque esse anúncio como removido no banco de dados local. Erros que não podem ser tratados dessa maneira podem fazer com que o app inicie um job de sincronização mais completo ou seja adicionado a uma fila para a análise de um operador.