Categorizamos os erros nas seguintes categorias gerais:
- Autenticação
- Pode ser repetida
- Validação
- Relacionado à sincronização
Embora essas categorias não abranjam 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 seu app. Consulte os seguintes recursos para mais detalhes sobre erros específicos:
- Erros comuns fornece mais detalhes sobre um erro específico.
- google.rpc.Status para detalhes sobre o modelo de erro lógico usado pela API.
Erros de autenticação
A autenticação se refere à permissão concedida por um usuário ao seu app para acessar o Google Ads em nome dele. A autenticação é gerenciada por credenciais geradas pelo fluxo OAuth2.
O motivo mais comum para um erro de autenticação surgir de fatores além do seu controle é que o usuário autenticado revogou a permissão que deu ao seu 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 como cada cliente
ao gerenciar a conta dele, um cliente pode revogar o acesso do app a
qualquer momento. Dependendo de quando seu 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 qualquer caso, se o app tiver uma interface para os clientes,
ele poderá pedir que eles reiniciem o fluxo do OAuth2 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 pequena 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, seu app pode primeiro tentar novamente a solicitação automaticamente, expondo o erro na interface após atingir um número máximo de novas tentativas ou o tempo total de espera do usuário.
Para solicitações iniciadas no back-end, seu app precisa tentar de novo automaticamente até um número máximo de 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 inseriu uma entrada inválida. Nesses casos, forneça uma mensagem de erro adequada ao usuário com base no erro específico da API recebido. Você também pode validar a entrada do usuário para erros comuns antes de fazer uma chamada de API, tornando seu app mais responsivo e o uso da API mais eficiente. Para solicitações do back-end, o app pode adicionar a operação com falha a uma fila para que um operador humano analise.
Erros relacionados à sincronização
Muitos apps do Google Ads mantêm um banco de dados local para armazenar os objetos do Google Ads. Um
desafio dessa abordagem é que o banco de dados local pode ficar dessincronizado 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 app e o banco de dados local não sabem da mudança e continuam emitindo 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.
Para solicitações iniciadas pelo usuário, uma estratégia é alertar o usuário sobre um possível problema de sincronização, iniciar imediatamente um job que recupera a classe relevante de objetos do Google Ads e atualiza o banco de dados local. Em seguida, peça ao usuário para atualizar a interface.
Para solicitações de back-end, alguns erros fornecem informações suficientes para que seu
app corrija automaticamente e de forma incremental o banco de dados local. Por exemplo, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
deve fazer com que o app marque o anúncio como
removido no banco de dados local. Erros que não podem ser tratados dessa forma podem fazer com que o app inicie um trabalho de sincronização mais completo ou seja adicionado a uma fila para revisão por um operador humano.