Rozwiązywanie problemów

Wideo: obejrzyj prezentację dotyczącą obsługi błędów z warsztatów z 2019 r.

Błędy mogą być spowodowane nieprawidłową konfiguracją środowiska, błędem w oprogramowaniu lub nieprawidłowymi danymi wejściowymi użytkownika. Niezależnie od źródła problemu musisz go rozwiązać, poprawiając kod lub dodając logikę, która obsłuży błąd użytkownika. W tym przewodniku omawiamy wybrane sprawdzone metody rozwiązywania problemów z błędami w interfejsie Google Ads API.

Zapewnienie łączności

  1. Upewnij się, że masz dostęp do interfejsu Google Ads API i odpowiednią konfigurację. Jeśli odpowiedź zwróci błędy HTTP, dokładnie je napraw i upewnij się, że usługi, których chcesz używać w kodzie, są dostępne.

  2. Twoje dane logowania są umieszczane w prośbie, aby usługi mogły Cię uwierzytelnić. Zapoznaj się ze strukturą żądań i odpowiedzi interfejsu Google Ads API, zwłaszcza jeśli chcesz obsługiwać wywołania bez korzystania z bibliotek klienta. Każda biblioteka klienta jest dostarczana z dokładnymi instrukcjami dotyczącymi dodawania danych logowania do pliku konfiguracyjnego (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 ta odpowiedź na błąd pokazuje, ż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, musisz rozwiązać błędy interfejsu Google Ads API.

Określanie problemu

Interfejs Google Ads API zwykle zgłasza błędy jako obiekt JSON failure, który zawiera w odpowiedzi listę błędów. Te obiekty zawierają kod błędu oraz komunikat wyjaśniający, dlaczego wystąpił. To pierwsze sygnały, które wskazują, na czym może 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 wywołują wyjątki, które zawierają błędy w odpowiedzi. Dobrym punktem wyjścia jest przechwycenie tych wyjątków i wydrukowanie wiadomości w dzienniku lub na ekranie rozwiązywania problemów. Połączenie tych informacji z innymi zdarzeniami zarejestrowanymi w aplikacji daje dobry ogólny obraz tego, co może powodować problem. Po znalezieniu błędu w logach musisz ustalić, co oznacza.

Badanie błędu

  1. Zapoznaj się z dokumentacją dotyczącą typowych błędów, która zawiera informacje o najczęściej występujących błędach. Zawiera on opis komunikatu o błędzie, odpowiednie odwołania do interfejsów API oraz informacje o tym, jak uniknąć tego błędu i jak sobie z nim poradzić.

  2. Jeśli w dokumentacji dotyczącej typowych błędów nie ma informacji o danym błędzie, zapoznaj się z naszą dokumentacją referencyjną i poszukaj ciągu znaków błędu.

  3. Przeszukaj nasze kanały pomocy, aby uzyskać dostęp do innych programistów, którzy dzielą się swoimi doświadczeniami z interfejsem API. Ktoś inny mógł napotkać ten sam problem i już go rozwiązać.

  4. Jeśli natrafisz na błędy, które nie są opisane w dokumentacji, zgłoś je na forum.

  5. Aby rozwiązać problemy z weryfikacją lub limitami konta, odwiedź Centrum pomocy Google Ads. Interfejs Google Ads API dziedziczy reguły i ograniczenia podstawowej usługi Google Ads.

  6. Posty na blogu mogą być przydatne podczas rozwiązywania problemów z aplikacją.

Po zbadaniu błędu należy ustalić jego główną przyczynę.

Znalezienie przyczyny

Aby określić przyczynę błędu, sprawdź komunikat o wyjątkach. Po zapoznaniu się z odpowiedzią sprawdź prośbę, aby dowiedzieć się, jaka może być przyczyna problemu. Niektóre komunikaty o błędach interfejsu Google Ads API zawierają w polu location w żądaniu GoogleAdsError wartość fieldPathElements, która wskazuje, w jakim miejscu 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ę okazać, że aplikacja przesyła do interfejsu API nieprawidłowe informacje. Zdecydowanie zalecamy korzystanie z interaktywnego środowiska programistycznego (IDE), takiego jak Eclipse (bezpłatne środowisko programistyczne typu open source, które jest używane głównie do tworzenia aplikacji w języku Java, ale zawiera też wtyczki do innych języków), aby ułatwić debugowanie. Umożliwia ona ustawianie punktów przerwania i przechodzenie przez kod wiersz po wierszu.

Sprawdź, czy żądanie jest zgodne z danymi wejściowymi aplikacji (np. nazwa kampanii może nie być uwzględniona w żądaniu). Pamiętaj, aby wysłać maskę pola odpowiadającą wprowadzanym zmianom. Interfejs Google Ads API obsługuje skąpe aktualizacje. Pominięcie pola w masce pola w żądaniu zmiany wskazuje, że interfejs API powinien je pominąć. Jeśli Twoja aplikacja pobiera obiekt, wprowadza w nim zmiany i wysyła go z powrotem, możesz zapisywać dane w polu, które nie obsługuje aktualizowania. Sprawdź opis pola w dokumentacji, aby dowiedzieć się, czy i kiedy możesz go aktualizować.

Jak uzyskać pomoc

Nie zawsze można samodzielnie zidentyfikować i rozwiązać problem. Zadając pytanie na forum, udostępniasz je tysiącom deweloperów, którzy mogą mieć doświadczenie z tym samym problemem.

W zapytaniach staraj się podawać jak najwięcej informacji. Polecane elementy:

  • Przetworzone żądanie i odpowiedź w formacie JSON. Pamiętaj, aby usunąć informacje poufne, takie jak token dewelopera lub AuthToken.
  • Fragmenty kodu. Jeśli masz problem z językiem lub potrzebujesz pomocy w korzystaniu z interfejsu API, dołącz fragment kodu, aby wyjaśnić, co robisz.
  • RequestId. Dzięki temu członkowie zespołu ds. relacji z deweloperami w Google mogą znaleźć Twoją prośbę, jeśli została wysłana w sytuacji, gdy dotyczy środowiska produkcyjnego. Zalecamy rejestrowanie w logach identyfikatora żądania (requestId) podanego jako właściwości w wyjątkach, które zawierają błędy odpowiedzi, a także więcej informacji niż tylko identyfikator żądania.
  • Dodatkowe informacje, takie jak wersja środowiska uruchomieniowego lub interpretera oraz platforma, mogą być też przydatne podczas rozwiązywania problemów.

Jak naprawić problem

Po znalezieniu problemu i sformułowaniu rozwiązania nadszedł czas na wprowadzenie zmian i przetestowanie poprawki na koncie testowym (co jest preferowane) lub produkcyjnym (jeśli błąd dotyczy tylko danych na określonym koncie produkcyjnym).

Udostępnianie

Jeśli na forum zostało opublikowane pytanie dotyczące błędu, który nie był wcześniej poruszany, a Ty znalazłeś rozwiązanie, rozważ dodanie go do wątku. Gdy następnym razem programista napotka ten sam problem, będzie mógł go rozwiązać od razu.

Następne kroki

Czy po rozwiązaniu tego problemu zauważyłeś/zauważyłaś jakieś sposoby na ulepszenie kodu, aby uniknąć tego problemu w przyszłości?

Utworzenie dobrego zestawu testów jednostkowych znacznie poprawia jakość i niezawodność kodu. Przyspiesza też proces testowania nowych zmian, aby mieć pewność, że nie zakłóciły one wcześniejszej funkcjonalności. Dobra strategia obsługi błędów jest też kluczowa do udostępniania wszystkich danych potrzebnych do rozwiązywania problemów.