Typy błędów

Błędy podzieliliśmy na te kategorie ogólne:

  • Uwierzytelnianie
  • Można ponowić próbę
  • Weryfikacja
  • Związane z synchronizacją

Te kategorie nie obejmują wszystkich możliwych błędów, a niektóre z nich pasują do więcej niż jednej kategorii, ale mimo to mogą być punktem wyjścia do planowania obsługi błędów w aplikacji. Więcej informacji o poszczególnych błędach znajdziesz w sekcji Typowe błędy.

Błędy uwierzytelniania

Uwierzytelnianie odnosi się do tego, czy użytkownik przyznał aplikacji uprawnienia dostępu do Google Ads w jego imieniu. Uwierzytelnianiem zarządza się za pomocą danych logowania wygenerowanych w procesie OAuth2.

Najczęstszą przyczyną błędu uwierzytelniania wynikającą z czynników, na które nie masz wpływu, jest unieważnienie uprawnień przyznane aplikacji do działania w jego imieniu. Jeśli na przykład Twoja aplikacja zarządza osobnymi kontami Google Ads dla niezależnych klientów i uwierzytelnia się oddzielnie jako każdy klient podczas zarządzania kontem klienta, może on w każdej chwili odebrać jej dostęp. W zależności od tego, kiedy Twój dostęp został unieważniony, interfejs API może bezpośrednio zwrócić błąd AuthenticationError.OAUTH_TOKEN_REVOKED lub wbudowane obiekty danych logowania w bibliotekach klienta mogą zgłosić wyjątek unieważniony token. W obu przypadkach, jeśli aplikacja ma dla klientów interfejs użytkownika, może poprosić ich o ponowne uruchomienie protokołu OAuth2, aby ponownie przyznać jej uprawnienia do działania w ich imieniu.

Błędy, które można ponawiać

Niektóre błędy, takie jak TRANSIENT_ERROR lub INTERNAL_ERROR, mogą wskazywać na tymczasowy problem, który może zostać rozwiązany przez ponawianie żądania po krótkiej przerwie.

W przypadku żądań zainicjowanych przez użytkownika jedną ze strategii jest natychmiastowe wskazanie błędu w interfejsie użytkownika i umożliwienie próby przeprowadzenia ponownej próby. Aplikacja może też najpierw automatycznie ponawiać żądanie, wyświetlając błąd w interfejsie dopiero po osiągnięciu maksymalnej liczby ponownych prób lub łącznego czasu oczekiwania użytkownika.

W przypadku żądań zainicjowanych przez zaplecze aplikacja powinna automatycznie ponawiać żądania do maksymalnej liczby ponownych prób.

Gdy spróbujesz ponownie wysłać żądania, użyj zasady wygładzania wykładniczego. Na przykład jeśli po raz pierwszy wstrzymasz kampanię 5 sekund przed pierwszą, możesz wstrzymać 10 sekund po drugiej i 20 sekund po trzeciej. Wykładnicze opóźnienie sprawia, że interfejs API nie jest wywoływany zbyt agresywnie.

Błędy weryfikacji

Błędy weryfikacji wskazują, że dane wejściowe operacji nie były akceptowane. Na przykład PolicyViolationError, DateError, DateRangeError, StringLengthError i UrlFieldError.

Błędy weryfikacji najczęściej występują w przypadku żądań zainicjowanych przez użytkownika, gdy użytkownik podał nieprawidłowe dane wejściowe. W takim przypadku musisz wyświetlić użytkownikowi odpowiedni komunikat o błędzie odpowiadający danemu błądowi interfejsu API, który wystąpił. Przed wykonaniem wywołania interfejsu API możesz też sprawdzać dane wejściowe użytkownika pod kątem typowych błędów. Dzięki temu aplikacja stanie się bardziej elastyczna i będzie bardziej wydajnie korzystać z interfejsu API. W przypadku żądań wysyłanych z zaplecza aplikacja może dodać nieudaną operację do kolejki do sprawdzenia przez operatora.

Wiele aplikacji Google Ads utrzymuje lokalną bazę danych do przechowywania obiektów Google Ads. Jednym z wyzwań związanych z tym podejściem jest fakt, że lokalna baza danych może nie być zsynchronizowana z rzeczywistymi obiektami w Google Ads. Użytkownik może np. usunąć grupę reklam bezpośrednio w Google Ads, ale aplikacja i lokalna baza danych nie są świadome zmiany i nadal wysyłają wywołania interfejsu API tak, jakby ta grupa reklam istniała. Te problemy z synchronizacją mogą mieć różne formy, np. DUPLICATE_CAMPAIGN_NAME, DUPLICATE_ADGROUP_NAME, AD_NOT_UNDER_ADGROUP, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD itp.

W przypadku żądań zainicjowanych przez użytkownika jedną ze strategii jest powiadomienie użytkownika o możliwym problemie z synchronizacją, natychmiastowe uruchomienie zadania, które pobiera odpowiednią klasę obiektów Google Ads i aktualizuje lokalną bazę danych, a następnie prosi użytkownika o odświeżenie interfejsu.

W przypadku żądań backendu niektóre błędy dostarczają wystarczająco dużo informacji, aby aplikacja automatycznie i stopniowo poprawiała lokalną bazę danych. Na przykład kod CANNOT_OPERATE_ON_REMOVED_ADGROUPAD powinien spowodować, że aplikacja oznaczy tę reklamę jako usuniętą w lokalnej bazie danych. Błędy, których nie uda Ci się w ten sposób obsłużyć, mogą spowodować uruchomienie przez aplikację pełniejszego zadania synchronizacji lub dodanie jej do kolejki do sprawdzenia przez operatora.