Os erros foram categorizados nas seguintes categorias gerais:
- Autenticação
- Repetitível
- Validação
- Relacionadas à sincronização
Embora essas categorias não englobem todos os erros possíveis e algumas possam se encaixar em mais de uma categoria, elas podem servir como ponto de partida para estruturar o processamento de erros do app. Consulte os recursos a seguir 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 para que seu app acesse o Google Ads em nome dele. A autenticação é gerenciada por credenciais geradas pelo fluxo OAuth2.
A causa mais comum de um erro de autenticação devido a fatores fora do seu
controle é que o usuário autenticado revogou a permissão concedida ao
app para agir em nome dele. Por exemplo, se o app gerencia contas separadas do Google Ads para clientes independentes e faz autenticação separadamente como cada cliente ao gerenciar a conta desse cliente, um cliente 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 qualquer caso, se o app tiver uma interface para os 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 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 tentar novamente. Como alternativa, seu app pode tentar a solicitação novamente automaticamente, expondo o erro na interface apenas após atingir o 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 precisa tentar novamente a solicitação automaticamente até um número máximo de tentativas.
Ao repetir 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, 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
.
Erros de validação ocorrem com mais frequência em solicitações iniciadas pelo usuário, em que um usuário digitou 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 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 a revise.
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 fora de sincronia 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 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 extraia a classe relevante de objetos do Google Ads e atualize o banco de dados local, depois solicite que o usuário atualize a interface.
Para solicitações de back-end, alguns erros fornecem informações suficientes para que o
app corrija o banco de dados local de forma automática e incremental. Por exemplo,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
faz com que o app marque esse anúncio como
removido no banco de dados local. Erros que não podem ser processados 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 a revise.