Rozwiązywanie problemów

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Film: Zapoznaj się z warsztatem na temat obsługi błędów w 2019 roku

Błędy mogą być spowodowane nieprawidłową konfiguracją środowiska, błędem w oprogramowaniu lub nieprawidłowymi danymi użytkownika. Niezależnie od źródła trzeba będzie 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 związanych z błędami interfejsu Google Ads API.

Zapewnianie połączeń

  1. Sprawdź, czy masz dostęp do interfejsu Google Ads API i prawidłową konfigurację. Jeśli w odpowiedzi pojawią się błędy HTTP, rozwiąż te problemy i sprawdź, czy kod, z którego korzystasz, dociera do odpowiednich usług.

  2. Dane uwierzytelniające są umieszczone w Twoim żądaniu w celu uwierzytelnienia usług. Zapoznaj się ze strukturą żądań i odpowiedzi Google Ads API, zwłaszcza w przypadku obsługi połączeń bez korzystania z bibliotek klienta. Każda biblioteka klienta jest dostarczana z określonymi instrukcjami dotyczącymi umieszczania danych logowania w pliku konfiguracyjnym (patrz README biblioteki klienta).

  3. Sprawdź, czy używasz prawidłowych danych logowania. Nasz krótki przewodnik pomoże Ci uzyskać odpowiedni zestaw. 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, przejdź do rozwiązywania problemów związanych z błędami interfejsu Google Ads API.

Określanie problemu

Interfejs Google Ads API generalnie raportuje błędy jako obiekty błędów JSON zawierające listę błędów w odpowiedzi. Obiekty te zawierają kod błędu oraz wyjaśnienie, dlaczego tak się stało. To pierwsze sygnały tego, 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 nasze biblioteki klienta generują wyjątki, które opisują błędy w odpowiedzi. Na początek warto przechwytywać te wyjątki i drukować wiadomości w dzienniku lub na ekranie rozwiązywania problemów. Integracja tych informacji z innymi zarejestrowanymi zdarzeniami w aplikacji pozwala dokładnie określić, co może być przyczyną problemu. Gdy znajdziesz błąd w dziennikach, musisz ustalić, co on oznacza.

Sprawdzanie błędu

  1. Przeczytaj dokumentację Najczęstsze błędy, która zawiera najczęstsze błędy. Opisuje komunikat o błędzie, istotne odwołania do interfejsu API oraz sposób unikania lub obsługi błędu.

  2. Jeśli w naszej dokumentacji nie ma informacji o błędzie, zapoznaj się z dokumentacją i znajdź ciąg błędu.

  3. Przeszukaj kanały pomocy, aby uzyskać dostęp do innych deweloperów, którzy dzielą się swoimi doświadczeniami z interfejsem API. Ktoś inny mógł mieć do czynienia z Twoim problemem.

  4. Jeśli zauważysz błędy, które nie zostały udokumentowane, zgłoś je na forum.

  5. Odwiedź Centrum pomocy Google Ads, aby dowiedzieć się, jak rozwiązać problemy z weryfikacją lub limitem konta – interfejs Google Ads API dziedziczy reguły i ograniczenia z podstawowej usługi Google Ads.

  6. Posty na blogu mogą się przydać przy rozwiązywaniu problemów z aplikacją.

Po zapoznaniu się z błędem czas ustalić główną przyczynę.

Znajdowanie przyczyny

Sprawdź komunikat o wyjątku, aby ustalić przyczynę błędu. Po zapoznaniu się z odpowiedzią sprawdź żądanie, aby poznać możliwe przyczyny. Niektóre komunikaty o błędach w interfejsie Google Ads API zawierają znak fieldPathElements w polu location w GoogleAdsError wskazujący, 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żliwe, że podczas rozwiązywania problemu aplikacja przekazuje nieprawidłowe informacje do interfejsu API. Zdecydowanie zalecamy korzystanie z interaktywnego środowiska programistycznego (IDE), takiego jak Eclipse (bezpłatne oprogramowanie open source, które jest używane głównie do programowania w języku Java, ale zawiera wtyczki do innych języków) ułatwiające debugowanie. Pozwalają one ustawić punkty przerwania i przechodzić przez poszczególne wiersze kodu.

Dokładnie sprawdź, czy żądanie jest zgodne z danymi wejściowymi aplikacji (np. nazwa kampanii może nie dotrzeć do żądania). Upewnij się, że wysyłasz maskę pól odpowiadającą zmianom, które chcesz wprowadzić – interfejs Google Ads API obsługuje niewielkie aktualizacje. Pominięcie pola w masce pola w żądaniu mutacji wskazuje, że interfejs API powinien pozostać sam. Jeśli aplikacja pobierze obiekt, zmodyfikuje go i odeśle, może to być pole, które nie obsługuje aktualizacji. Sprawdź opis pola w dokumentacji, aby dowiedzieć się, czy istnieją ograniczenia dotyczące czasu lub dostępności aktualizacji.

Jak uzyskać pomoc

Nie zawsze można samodzielnie zidentyfikować problem i go rozwiązać. Zadawanie pytania na forum ujawnia Twoje pytanie tysiącom deweloperów, którzy mogli mieć taki sam problem.

Staraj się uwzględniać w zapytaniach jak najwięcej informacji. Zalecane elementy:

  • Zatwierdzone żądania i odpowiedzi JSON. Pamiętaj, aby usunąć informacje poufne, takie jak token programisty czy AuthToken.
  • Fragmenty kodu. Jeśli masz problem związany z konkretnym językiem lub prosisz o pomoc w korzystaniu z interfejsu API, dodaj fragment kodu, który wyjaśnia, co robisz.
  • RequestId. Dzięki temu członkowie zespołu Google Developer Relations będą mogli zlokalizować Twoją prośbę w środowisku produkcyjnym. Zalecamy zarejestrowanie w logach parametru requestId dołączonego do usługi jako wyjątku, która zawiera błędy odpowiedzi, a także większej ilości informacji niż sam requestId.
  • Podczas rozwiązywania problemów mogą być przydatne dodatkowe informacje, takie jak wersja środowiska wykonawczego/tłumacza i platforma.

Jak naprawić problem

Gdy już wiesz, na czym polega problem, i przygotujesz rozwiązanie, czas na wprowadzenie zmian i przeprowadzenie poprawek na koncie testowym (preferowanym) lub w środowisku produkcyjnym (jeśli błąd dotyczy tylko danych na konkretnym koncie produkcyjnym).

Rozważ udostępnianie

Jeśli na forum pojawi się pytanie o błąd, który wcześniej nie został opisany, i znaleźsz rozwiązanie, rozważ dodanie tego wątku do wątku. Następnym razem, gdy deweloper napotka ten sam problem, będzie mógł szybko go rozwiązać.

Dalsze kroki

Czy udało Ci się już rozwiązać ten problem? Czy przede wszystkim udało Ci się ulepszyć kod, aby tego uniknąć?

Dobry zestaw testów jednostkowych znacznie poprawia jakość i niezawodność kodu. Przyspiesza też proces testowania nowych zmian, aby nie zakłócać działania wcześniejszych funkcji. Dobra strategia obsługi błędów jest również kluczowa w przekazywaniu wszystkich danych niezbędnych do rozwiązywania problemów.