Categorizamos os erros nas seguintes categorias gerais:
- Autenticação
- Repetível
- Validação
- Relacionado à sincronização
Embora essas categorias não abranjam todos os erros possíveis e alguns possam se enquadrar em mais de uma categoria, elas podem servir como ponto de partida para estruturar o tratamento de erros do seu app. Consulte os recursos a seguir para mais detalhes sobre erros específicos:
- Erros comuns (link em inglês) fornece mais detalhes sobre um erro específico.
- google.rpc.Status (link em inglês) para detalhes sobre o modelo de erro lógico usado pela API.
- Códigos de erro canônicos (link em inglês) para uma lista e explicação dos códigos de erro canônicos definidos pelo gRPC e HTTP no contexto da API Google Ads.
Erros de autenticação
A autenticação se refere a se o usuário concedeu permissão 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 fora do seu controle é que o usuário autenticado revogou a permissão que concedeu ao seu app para agir em nome dele. Por exemplo, se o app gerencia contas separadas do Google Ads para clientes independentes e se autentica separadamente como cada cliente ao gerenciar a conta dele, um cliente pode revogar o acesso do seu 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 seus clientes, ele poderá pedir que eles reiniciem o fluxo 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 uma opção para acionar uma nova tentativa. Como alternativa, o app pode tentar novamente a solicitação automaticamente e só expor o erro na interface depois de 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, o app deve tentar novamente a solicitação automaticamente até um número máximo de novas tentativas.
Ao tentar novamente as 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, A espera exponencial ajuda a garantir que você não esteja chamando a API de forma muito agressiva.
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 um usuário inseriu uma entrada inválida. Nesses casos, você precisa fornecer uma mensagem de erro adequada ao usuário com base no erro específico da API que 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, 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 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 uma variedade de 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 e, em seguida, pedir que o usuário atualize a interface.
Para solicitações de back-end, alguns erros fornecem informações suficientes para que o app corrija automaticamente e incrementalmente o banco de dados local. Por exemplo,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
deve fazer com que o app marque esse anúncio como
removido no banco de dados local. Os erros que não podem ser tratados dessa forma podem fazer com que o app inicie um job de sincronização mais completo ou seja adicionado a uma fila para que um operador humano analise.