Błędy zostały podzielone na te ogólne kategorie:
- Uwierzytelnianie
- Możliwość ponownego wykonania
- Weryfikacja
- Powiązane z synchronizacją
Chociaż te kategorie nie obejmują wszystkich możliwych błędów, a niektóre z nich mogą pasować do więcej niż 1 kategorii, mogą one posłużyć jako punkt wyjścia do stworzenia struktury obsługi błędów w aplikacji. Więcej informacji o poszczególnych błędach znajdziesz w tych zasobach:
- Sekcja Typowe błędy zawiera więcej informacji o konkretnym błędzie.
- google.rpc.Status, aby uzyskać szczegółowe informacje o modelu błędu logicznego używanym przez interfejs API.
Błędy uwierzytelniania
Uwierzytelnianie polega na tym, czy użytkownik przyznał aplikacji uprawnienia do uzyskiwania dostępu do Google Ads w jego imieniu. Uwierzytelnianiem zarządza się za pomocą danych uwierzytelniających wygenerowanych w ramach przepływu danych OAuth2.
Najczęstszą przyczyną błędu uwierzytelniania, która zależy od czynników niezależnych od Ciebie, jest cofnięcie przez uwierzytelnionego użytkownika uprawnień do działania w jego imieniu. Jeśli np. Twoja aplikacja zarządza osobnymi kontami Google Ads dla niezależnych klientów i podczas zarządzania kontem danego klienta uwierzytelnia się jako każdy z nich, klient może w dowolnym momencie cofnąć dostęp aplikacji. W zależności od tego, kiedy dostęp został cofnięty, interfejs API może zwrócić bezpośrednio błąd AuthenticationError.OAUTH_TOKEN_REVOKED
lub wbudowane obiekty danych logowania w bibliotekach klienta mogą wywołać wyjątek związany z anulowaniem tokenu. W obu przypadkach, jeśli aplikacja ma interfejs dla klientów, może poprosić ich o ponowne uruchomienie procesu OAuth 2 w celu przywrócenia uprawnień aplikacji do działania w imieniu klienta.
Błędy z możliwością ponownej próby
Niektóre błędy, takie jak TRANSIENT_ERROR
lub INTERNAL_ERROR
, mogą wskazywać na tymczasowy problem, który można rozwiązać, ponownie wysyłając żądanie po krótkiej przerwie.
W przypadku żądań inicjowanych przez użytkownika jedną z możliwych strategii jest natychmiastowe wskazanie błędu w interfejsie i danie użytkownikowi możliwości ponownego wykonania próby. Aplikacja może też najpierw automatycznie ponownie wysłać żądanie, wyświetlając błąd w interfejsie dopiero po osiągnięciu maksymalnej liczby prób lub po upływie łącznego czasu oczekiwania użytkownika.
W przypadku żądań inicjowanych na zapleczu aplikacja powinna automatycznie powtarzać żądanie do osiągnięcia maksymalnej liczby prób.
Gdy powtarzasz próby wysyłania żądań, stosuj strategię wzrastającego czasu do ponowienia. Jeśli na przykład wstrzymasz odtwarzanie 5 sekund przed pierwszą próbą, możesz wstrzymać je na 10 sekund po drugiej próbie i na 20 sekund po trzeciej próbie. Wycofanie wykładnicze pomaga zadbać o to, aby nie wywoływać interfejsu API zbyt agresywnie.
Błędy weryfikacji
Błędy walidacji wskazują, że dane wejściowe operacji nie były akceptowalne.
Na przykład: PolicyViolationError
, DateError
, DateRangeError
, StringLengthError
i UrlFieldError
.
Błędy weryfikacji występują najczęściej w przypadku żądań inicjowanych przez użytkownika, w których użytkownik wprowadził nieprawidłowy element wejściowy. W takich przypadkach należy wyświetlić użytkownikowi odpowiedni komunikat o błędzie, który zależy od otrzymanego błędu interfejsu API. Zanim wywołasz interfejs API, możesz też sprawdzić, czy dane wejściowe użytkownika nie zawierają typowych błędów, co zwiększy szybkość działania aplikacji i skuteczność korzystania z interfejsu API. W przypadku żądań z back-endu aplikacja może dodać nieudaną operację do kolejki, aby operator mógł ją sprawdzić.
Błędy związane z synchronizacją
Wiele aplikacji Google Ads korzysta z lokalnej bazy danych do przechowywania obiektów Google Ads. Jednym z wyzwań związanych z tym podejściem jest to, że lokalna baza danych może stracić synchronizację 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 tej zmiany i nadal wysyłają wywołania interfejsu API tak, jakby grupa reklam nadal istniała. Te problemy z synchronizacją mogą objawiać się w postaci różnych błędów, takich jak DUPLICATE_CAMPAIGN_NAME
, DUPLICATE_ADGROUP_NAME
, AD_NOT_UNDER_ADGROUP
, CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
i wiele innych.
W przypadku żądań inicjowanych przez użytkownika jedną z możliwych strategii jest ostrzeżenie użytkownika o potencjalnym problemie z synchronizacją, natychmiastowe uruchomienie zadania, które pobiera odpowiednią klasę obiektów Google Ads i aktualizuje lokalną bazę danych, a następnie poproszenie użytkownika o odświeżenie interfejsu.
W przypadku żądań z tego poziomu niektóre błędy zawierają wystarczającą ilość informacji, aby aplikacja mogła automatycznie i stopniowo poprawiać lokalną bazę danych. Na przykład:CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
powoduje, że aplikacja oznacza reklamę jako usunięta w lokalnej bazie danych. Błędy, których nie można obsłużyć w ten sposób, mogą spowodować uruchomienie przez aplikację bardziej kompleksowego zadania synchronizacji lub dodanie aplikacji do kolejki do sprawdzenia przez operatora.