Rozwiązywanie problemów

Film: Obejrzyj prezentację na temat obsługi błędów podczas warsztatów w 2019 roku

Błędy mogą być spowodowane nieprawidłową konfiguracją środowiska, błędem w oprogramowaniu lub nieprawidłowymi danymi wprowadzonymi przez użytkownika. Niezależnie od źródła musisz rozwiązać problem i naprawić kod lub dodać logikę umożliwiającą obsługę błędu użytkownika. W tym przewodniku omawiamy niektóre sprawdzone metody rozwiązywania problemów z błędami interfejsu Google Ads API.

Zapewnienie połączenia

  1. Sprawdź, czy masz dostęp do interfejsu Google Ads API i czy masz prawidłową konfigurację. Jeśli odpowiedź zwraca błędy HTTP, upewnij się, że rozwiązujesz te problemy dokładnie i że docierasz do usług, których chcesz używać w kodzie.

  2. 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 masz obsługiwać wywołania bez bibliotek klienta. Do każdej biblioteki klienta są dołączone konkretne instrukcje dotyczące umieszczania danych logowania w pliku konfiguracyjnym (zapoznaj się z plikiem README biblioteki klienta).

  3. Sprawdź, czy używasz poprawnych danych logowania. Z naszego krótkiego wprowadzenia dowiesz się, jak uzyskać odpowiedni zestaw. Na przykład ten błąd odpowiedzi oznacza, ż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 problemy nadal występują, przejdź do rozwiązywania problemów z interfejsem Google Ads API.

Określenie problemu

Interfejs Google Ads API zwykle zgłasza błędy jako obiekt błędu JSON, który zawiera listę błędów w odpowiedzi. Obiekty te zawierają kod błędu oraz komunikat wyjaśniający przyczynę jego wystąpienia. To 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. Najlepiej zacząć od przechwytywania tych wyjątków i wydrukowania wiadomości w dzienniku lub na ekranie rozwiązywania problemów. Integracja tych informacji z innymi zarejestrowanymi zdarzeniami w aplikacji pozwoli Ci zorientować się, co może powodować problem. Gdy znajdziesz błąd w dziennikach, musisz sprawdzić, co on oznacza.

Sprawdzanie błędu

  1. Zapoznaj się z dokumentacją typowych błędów, która opisuje najczęściej spotykane błędy. Opisuje komunikat o błędzie, odpowiednie odniesienia do interfejsu API oraz sposób postępowania z błędem lub jego uniknięcia.

  2. Jeśli w dokumentacji dotyczącej typowych błędów nie ma wzmianki o błędzie, poszukaj informacji o ciągu błędu w dokumentacji referencyjnej.

  3. Przeszukaj nasze kanały pomocy, by uzyskać dostęp do innych programistów, którzy dzielą się swoimi doświadczeniami związanymi z interfejsem 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, poinformuj nas o tym na forum.

  5. Odwiedź Centrum pomocy Google Ads, aby uzyskać pomoc w rozwiązywaniu problemów z weryfikacją lub limitem kont – interfejs Google Ads API dziedziczy reguły i ograniczenia głównej usługi Google Ads.

  6. Posty na blogu będą od czasu do czasu pomocne przy rozwiązywaniu problemów z aplikacją.

Po zbadaniu błędu przyszedł czas na określenie jego głównej przyczyny.

Szukam przyczyny

Aby określić przyczynę błędu, zapoznaj się z komunikatem o wyjątku. Po zapoznaniu się z odpowiedzią poszukaj w żądaniu możliwej przyczyny. Niektóre komunikaty o błędach interfejsu Google Ads API zawierają w polu location właściwości GoogleAdsError znak fieldPathElements, który wskazuje, w którym miejscu żądania 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 Twoja aplikacja przekazuje do interfejsu API nieprawidłowe informacje. Zdecydowanie zalecamy korzystanie z interaktywnego środowiska programistycznego (IDE), takiego jak Eclipse (bezpłatne środowisko typu open source, które służy głównie do tworzenia języka Java, ale zawiera wtyczki dla innych języków), aby ułatwić debugowanie. Umożliwia on wyznaczanie punktów przerwania i pracę w wierszu po wierszu.

Dokładnie sprawdź, czy żądanie odpowiada danym w aplikacji (np. nazwa kampanii może nie dotrzeć do żądania). Pamiętaj, by wysłać maskę pola, która pasuje do zmian, które chcesz wprowadzić – interfejs Google Ads API obsługuje rozproszone aktualizacje. Pominięcie pola w masce pola w żądaniu mutacji oznacza, że interfejs API powinien pozostawić to pole bez zmian. Jeśli Twoja aplikacja pobiera obiekt, wprowadza zmianę i odsyła go, być może piszesz w polu, które nie obsługuje aktualizacji. Sprawdź opis pola w dokumentacji referencyjnej, aby sprawdzić, czy są jakieś ograniczenia dotyczące tego, kiedy lub czy pole można zaktualizować.

Jak uzyskać pomoc

Nie zawsze jest możliwe samodzielne zidentyfikowanie i rozwiązanie problemu. Gdy zadajesz pytanie na forum, możesz otrzymać je od tysięcy deweloperów, którzy mieli już do czynienia z tym samym problemem.

Postaraj się zawrzeć w zapytaniach jak najwięcej informacji. Zalecane produkty:

  • Poprawione żądanie i odpowiedź JSON. Usuń informacje poufne, takie jak token programisty czy AuthToken.
  • Fragmenty kodu. Jeśli masz problem związany z językiem lub potrzebujesz pomocy w korzystaniu z interfejsu API, dodaj fragment kodu, który wyjaśni, co robisz.
  • Identyfikator żądania. Dzięki temu członkowie zespołu ds. kontaktów z deweloperami w Google będą mogli zlokalizować Twoją prośbę, jeśli zostanie ona przesłana w środowisku produkcyjnym. Zalecamy rejestrowanie w logach identyfikatora requestId jako właściwości w wyjątkach, które zawierają błędy odpowiedzi, a także szerszego kontekstu poza samym requestId.
  • Do rozwiązywania problemów mogą Ci się też przydać dodatkowe informacje, np. wersja i platforma środowiska wykonawczego/interpretera.

Jak naprawić problem

Teraz, gdy rozwiążesz problem i opracujesz rozwiązanie, możesz przejść do wprowadzenia zmian i przetestowania poprawki na koncie testowym (preferowane) lub produkcyjnym (jeśli błąd dotyczy tylko danych na konkretnym koncie produkcyjnym).

Rozważ udostępnianie

Jeśli na forum publikujesz pytanie dotyczące błędu, który nie pojawiał się wcześniej, i znaleźłeś rozwiązanie, możesz dodać go do wątku. Następnym razem, gdy deweloper będzie miał ten sam problem, będzie mógł od razu go rozwiązać.

Dalsze kroki

Czy po rozwiązaniu problemu udało Ci się w jakiś sposób ulepszyć kod, by uniknąć tego problemu?

Stworzenie dobrego zestawu testów jednostkowych pomaga znacznie poprawić jakość i niezawodność kodu. Przyspiesza to też proces testowania nowych zmian, dzięki czemu możesz mieć pewność, że nie zakłócają one działania poprzedniej funkcji. Dobra strategia postępowania z błędami jest też kluczowa dla znalezienia wszystkich danych niezbędnych do rozwiązywania problemów.