Rozwiązywanie problemów

Film: zobacz rozmowę o obsłudze błędów w warsztatach z 2019 r.

Przyczyną błędów może być nieprawidłowa konfiguracja środowiska, błąd w oprogramowaniu lub nieprawidłowe dane wejściowe użytkownika. Niezależnie od źródła musisz rozwiązać problem i naprawić kod lub dodać logikę, aby obsłużyć błąd użytkownika. W tym przewodniku znajdziesz sprawdzone metody rozwiązywania problemów z interfejsem Google Ads API.

Zapewnianie łączności

  1. Upewnij się, że masz dostęp do interfejsu Google Ads API i prawidłowa konfiguracja. Jeśli odpowiedź zwróci błędy HTTP, rozwiąż je i upewnij się, że korzystasz z usług, których chcesz użyć.

  2. Dane logowania są umieszczone w żądaniu, aby usługi mogły Cię uwierzytelnić. Zapoznaj się ze strukturą żądań i odpowiedzi w interfejsie Google Ads API, zwłaszcza jeśli chcesz obsługiwać wywołania bez korzystania z bibliotek klienta. Każda biblioteka klienta jest przesyłana z określonymi instrukcjami uwzględniania danych logowania w pliku konfiguracyjnym (sprawdź bibliotekę klienta README).

  3. Sprawdź, czy używasz poprawnych danych logowania. Nasz samouczek przeprowadzi Cię przez proces pozyskiwania odpowiedniego zestawu. Na przykład ten komunikat o błędzie 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 nadal masz problemy, dowiedz się, jak rozwiązywać problemy z błędami interfejsu API Google Ads.

Określanie problemu

Interfejs Google Ads API zazwyczaj raportuje 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, dlaczego tak się stało. To pierwsze sygnały o tym, co może być przyczyną problemu.

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

Wszystkie biblioteki klienta zwracają wyjątki, które obejmują błędy w odpowiedzi. Zacznij od przechwycenia tych wyjątków i wydrukowania wiadomości w dzienniku lub na ekranie rozwiązywania problemów. Integracja tych informacji z innymi rejestrowanymi zdarzeniami w aplikacji zapewnia dobry wgląd w to, co może być przyczyną problemu. Gdy znajdziesz błąd w dziennikach, musisz się dowiedzieć, co on oznacza.

Sprawdzanie błędu

  1. Więcej informacji o najczęstszych błędach znajdziesz w dokumentacji dotyczącej najczęstszych błędów. Opisuje komunikat o błędzie, odpowiednie odwołania do interfejsu API oraz sposób unikania lub obsługiwania błędu.

  2. Jeśli w naszej dokumentacji typowych błędów nie ma informacji o błędzie, zapoznaj się z dokumentacją i poszukaj ciągu błędów.

  3. Przeszukaj nasze kanały pomocy, aby uzyskać dostęp do innych deweloperów, którzy mogą się podzielić swoimi interfejsami API. Ktoś inny mógł kiedyś napotkać Twój problem i go rozwiązać.

  4. Jeśli napotkasz jakieś błędy, które nie zostały udokumentowane, zwróć uwagę na forum.

  5. Odwiedź Centrum pomocy Google Ads, aby uzyskać pomoc w rozwiązywaniu problemów z weryfikacją lub limitem konta – interfejs Google Ads API dziedziczy zasady i ograniczenia obowiązujące w podstawowej usłudze Google Ads.

  6. Posty na blogu przydadzą Ci się podczas rozwiązywania problemów z aplikacją.

Po zbadaniu błędu określamy jego główną przyczynę.

Określanie przyczyny

Aby dowiedzieć się, jaka jest przyczyna błędu, zajrzyj do komunikatu wyjątku. Po zapoznaniu się z odpowiedzią sprawdź żądanie pod kątem możliwej przyczyny. Niektóre komunikaty o błędach w interfejsie Google Ads API zawierają pole fieldPathElements w polu location w GoogleAdsError, które wskazuje, gdzie w żądaniu wystąpił błąd. Przykład:

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

Może to oznaczać, że aplikacja dostarcza do interfejsu API błędne informacje. Zdecydowanie zalecamy używanie interaktywnego środowiska programistycznego (IDE), takiego jak Eclipse (bezpłatne oprogramowanie open source, które służy przede wszystkim do programowania Java, ale zawiera wtyczki do innych języków), co ułatwia debugowanie. Możesz dzięki temu ustawiać punkty przerwania i przechodzić przez kolejne wiersze kodu.

Dokładnie sprawdź, czy żądanie pasuje do danych wejściowych aplikacji (na przykład nazwa kampanii nie dociera do żądania). Pamiętaj, aby wysłać maskę pola odpowiadającą zmianom, które chcesz wprowadzić – interfejs Google Ads API obsługuje drobne aktualizacje. Pominięcie pola z maski pola w żądaniu mutacji oznacza, że interfejs API powinien pozostać sam. Jeśli aplikacja pobiera obiekt, wprowadza zmianę i wysyła ją z powrotem, możesz zapisywać dane w polu, które nie obsługuje aktualizacji. Sprawdź opis w dokumentacji referencyjnej, aby dowiedzieć się, czy istnieją ograniczenia dotyczące czasu lub daty aktualizacji.

Jak uzyskać pomoc

Nie zawsze można samodzielnie zidentyfikować i rozwiązać problem. Zadawanie pytań na forum daje pytania deweloperom, którzy mogli mieć do czynienia z tym samym problemem.

W zapytaniach umieść jak najwięcej informacji. Zalecane produkty:

  • Zweryfikowane żądanie i odpowiedź JSON. Pamiętaj, aby usunąć informacje poufne, takie jak token programisty lub AuthToken.
  • Fragmenty kodu. Jeśli masz problem dotyczący określonego języka lub potrzebujesz pomocy w korzystaniu z interfejsu API, dołącz fragment kodu, który pomoże Ci to zrozumieć.
  • RequestId. Dzięki temu członkowie zespołu Google Developer Relations będą mogli zlokalizować Twoją prośbę, jeśli została ona utworzona w środowisku produkcyjnym. Zalecamy zarejestrowanie w logach parametru requestId uwzględnionego w właściwości jako wyjątków obejmujących błędy odpowiedzi oraz w szerszym kontekście niż sam requestId.
  • Podczas rozwiązywania problemów mogą też być przydatne informacje dodatkowe, takie jak wersja środowiska wykonawczego/interpretera i platforma.

Jak naprawić problem

Gdy już wiesz, na czym polega problem, i myślisz o rozwiązaniu problemu, pora wprowadzić zmianę i przetestować poprawkę na koncie testowym (preferowanym) lub produkcyjnym (jeśli błąd dotyczy tylko konkretnego konta produkcyjnego).

Rozważ udostępnianie

Jeśli na forum pojawi się pytanie o błąd, który nie został wcześniej opisany, możesz znaleźć je w wątku. Następnym razem deweloper będzie miał możliwość rozwiązania go od razu.

Następne kroki

Skoro ten problem został już rozwiązany, czy zauważyłeś(-aś), jak można go zabezpieczyć, aby tego uniknąć?

Utworzenie dobrego zestawu testów jednostkowych znacznie poprawia jakość i niezawodność kodu. Przyspiesza też proces testowania nowych zmian, aby nie zakłócać działania wcześniejszych funkcji. Odpowiednia strategia obsługi błędów jest także kluczowa, jeśli chodzi o dostarczanie wszystkich danych niezbędnych do rozwiązywania problemów.