Rozwiązywanie problemów

Film: zapoznaj się z prezentacją na temat obsługi błędów z warsztatów z 2019 roku

Błędy mogą być spowodowane błędną konfiguracją środowiska, błędem w oprogramowaniu lub nieprawidłowymi danymi wejściowymi użytkownika. Niezależnie od źródła musisz rozwiązać problem i naprawić kod lub dodać logikę obsługi błędu użytkownika. W tym przewodniku omawiamy wybrane sprawdzone metody rozwiązywania problemów z błędami w interfejsie Google Ads API.

Zapewnianie łączności

  1. Sprawdź, czy masz dostęp do interfejsu Google Ads API i poprawną konfigurację. Jeśli Twoja odpowiedź zwraca jakiekolwiek błędy HTTP, postępuj zgodnie z instrukcjami dokładnie i sprawdź, czy korzystasz z usług, których zamierzasz używać w kodzie.

  2. Twoje dane logowania są umieszczone w żądaniu, aby usługi mogły Cię uwierzytelnić. Zapoznaj się ze strukturą żądań i odpowiedzi interfejsu Google Ads API, zwłaszcza jeśli zamierzasz obsługiwać wywołania bez korzystania z bibliotek klienta. Każda biblioteka klienta jest dostarczana z instrukcjami dotyczącymi umieszczania danych logowania w pliku konfiguracji (zapoznaj się z plikiem README biblioteki klienta).

  3. Sprawdź, czy używasz prawidłowych danych logowania. Z naszego krótkiego wprowadzenia dowiesz się, jak pozyskać odpowiedni zestaw. Na przykład taki błąd odpowiedzi wskazuje, że użytkownik wysłał nieprawidłowe dane uwierzytelniające:

    {
      "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "detail": "Authentication error: 2"
          }
        ]
      }
    }
    

Jeśli po wykonaniu tych czynności nadal masz problemy, czas zająć się eliminowaniem błędów interfejsu Google Ads API.

Określenie problemu

Interfejs Google Ads API zazwyczaj zgłasza błędy w postaci obiektu JSON dotyczącego awarii, który zawiera listę błędów w odpowiedzi. Obiekty te udostępniają kod błędu oraz komunikat wyjaśniający, dlaczego wystąpił. To Twoje pierwsze sygnały, na czym polega problem.

{
  "errors": [
    {
      "errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
      "message": "The field mask contained an invalid field: 'keyword/matchtype'.",
      "location": { "operationIndex": "1" }
    }
  ]
}

Wszystkie nasze biblioteki klienta zgłaszają wyjątki, które zawierają błędy w odpowiedzi. Warto przechwycić te wyjątki i wydrukować komunikaty w dzienniku lub na ekranie rozwiązywania problemów. Zintegrowanie tych informacji z innymi zarejestrowanymi zdarzeniami w aplikacji umożliwia określenie, co może powodować problem. Po znalezieniu błędu w dziennikach musisz ustalić, co on oznacza.

Sprawdzanie błędu

  1. Zapoznaj się z dokumentacją typowych błędów, która zawiera te najczęstsze. Opisuje on komunikat o błędzie, odpowiednie odniesienia do interfejsu API oraz informacje o tym, jak go unikać lub jak sobie z nim radzić.

  2. Jeśli w dokumentacji dotyczącej częstych błędów nie ma konkretnych informacji o błędzie, zajrzyj do dokumentacji referencyjnej i odszukaj ciąg błędu.

  3. Przeszukaj nasze kanały pomocy, aby poznać innych deweloperów, którzy dzielą się swoimi doświadczeniami dotyczącymi interfejsu API. Ktoś inny mógł napotkać i rozwiązać Twój problem.

  4. Jeśli napotkasz jakieś błędy, które nie zostały udokumentowane, zgłoś nam to na forum.

  5. Aby uzyskać pomoc w rozwiązywaniu problemów z weryfikacją lub limitami konta, odwiedź Centrum pomocy Google Ads. Interfejs API Google Ads dziedziczy reguły i ograniczenia z podstawowej usługi Google Ads.

  6. Posty na blogu od czasu do czasu będą dobrym źródłem informacji podczas rozwiązywania problemów z aplikacją.

Po zbadaniu błędu trzeba znaleźć jego przyczynę.

Znalezienie przyczyny

Sprawdź komunikat o wyjątku, aby określić przyczynę błędu. Po zapoznaniu się z odpowiedzią sprawdź żądanie pod kątem możliwej przyczyny. Niektóre komunikaty o błędach interfejsu Google Ads API zawierają fieldPathElements w polu location GoogleAdsError, które wskazują, gdzie w żądaniu wystąpił błąd. Na przykład:

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "operationIndex": "0",
        "fieldPathElements": [ { "fieldName": "keyword" } ]
      }
    }
  ]
}

Podczas rozwiązywania problemu może się zdarzyć, że aplikacja przekazuje do interfejsu API błędne informacje. Zdecydowanie zalecamy korzystanie z interaktywnego środowiska programistycznego (IDE), takiego jak Eclipse (bezpłatne środowisko IDE typu open source, które służy głównie do programowania w języku Java, ale zawiera wtyczki do innych języków), które ułatwiają debugowanie. Pozwalają ustawiać punkty przerwania i przechodzić między kolejnymi wierszami kodu.

Dokładnie sprawdź, czy żądanie odpowiada danych wejściowych aplikacji (np. może się zdarzyć, że nazwa kampanii nie dotrze do żądania). Pamiętaj, by wysłać maskę pola odpowiadającą aktualizacji, które chcesz wprowadzić – interfejs Google Ads API obsługuje aktualizacje o rzadkiej częstotliwości. Pominięcie pola w masce pola w żądaniu mutacji wskazuje, że interfejs API powinien pozostawić to pole bez zmian. Jeśli Twoja aplikacja pobiera obiekt, wprowadza zmianę i wysyła go z powrotem, możliwe, że zapisujesz w polu, które nie obsługuje aktualizacji. Sprawdź opis pola w dokumentacji referencyjnej, aby sprawdzić, czy obowiązują jakieś ograniczenia dotyczące czasu lub możliwości aktualizacji tego pola.

Jak uzyskać pomoc

Nie zawsze można samodzielnie zidentyfikować i rozwiązać problem. Gdy zadajesz pytanie na forum, Twoje pytanie może trafić do tysięcy deweloperów, którzy mieli wcześniej do czynienia z tym samym problemem.

Postaraj się umieścić w zapytaniach jak najwięcej informacji. Zalecane elementy:

  • Gotowe żądanie i odpowiedź JSON. Pamiętaj, aby usunąć informacje poufne, takie jak token programisty czy AuthToken.
  • Fragmenty kodu. Jeśli masz problem związany z określonym językiem lub potrzebujesz pomocy w korzystaniu z interfejsu API, dołącz fragment kodu, który wyjaśni, co robisz.
  • Identyfikator żądania. Dzięki temu członkowie zespołu Google ds. relacji z deweloperami będą mogli znaleźć Twoje żądanie, jeśli zostanie ono przesłane w środowisku produkcyjnym. Zalecamy zarejestrowanie w logach identyfikatora requestId jako właściwości w wyjątkach zawierających błędy odpowiedzi, a także szerszego kontekstu niż tylko w przypadku requestId.
  • Podczas rozwiązywania problemów mogą okazać się przydatne dodatkowe informacje, takie jak wersja środowiska wykonawczego/interpretatora i platforma.

Jak naprawić problem

Gdy wiesz już, na czym polega problem i masz rozwiązanie, możesz go wprowadzić i przetestować na koncie testowym (opcja preferowana) lub na ścieżce produkcyjnej (jeśli błąd dotyczy tylko danych na określonym koncie produkcyjnym).

Warto udostępnić

Jeśli opublikujesz na forum pytanie dotyczące błędu, który nie pojawiał się wcześniej, i udało Ci się znaleźć rozwiązanie, zastanów się nad dodaniem go do wątku. Następnym razem, gdy napotka on ten sam problem, będzie mógł od razu go rozwiązać.

Dalsze kroki

Udało Ci się rozwiązać problem. Czy wiesz, jak można ulepszyć kod, aby w pierwszej kolejności go uniknąć?

Stworzenie dobrego zestawu testów jednostkowych znacznie poprawia jakość i niezawodność kodu. Przyspiesza też proces testowania nowych zmian, aby mieć pewność, że nie zakłócają one poprzedniej funkcjonalności. Dobra strategia obsługi błędów jest też kluczowa przy wyświetlaniu wszystkich danych niezbędnych do rozwiązywania problemów.