Rozwiązywanie problemów

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

Błędy mogą być spowodowane nieprawidłową konfiguracją środowiska, błędem w oprogramowaniu lub nieprawidłowym działaniem 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 sprawdzone metody rozwiązywania problemów z błędami interfejsu Google Ads API.

Zapewnianie łączności

  1. Sprawdź, czy masz dostęp do interfejsu Google Ads API i czy jest on prawidłowo skonfigurowany. Jeśli w odpowiedzi wystąpią błędy HTTP, dokładnie je sprawdź i upewnij się, że kod uzyskuje dostęp do usług, z których chcesz korzystać.

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

  3. Sprawdź, czy używasz prawidłowych danych logowania. Nasz przewodnik Szybki start przeprowadzi Cię przez proces uzyskiwania odpowiedniego zestawu. Na przykład poniższa odpowiedź o niepowodzeniu 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 występują problemy, czas rozwiązać błędy interfejsu Google Ads API.

Określanie problemu

Interfejs Google Ads API zwykle zgłasza błędy jako obiekt błędu JSON zawierający listę błędów w odpowiedzi. Obiekty te zawierają kod błędu oraz komunikat wyjaśniający, dlaczego wystąpił. Są to pierwsze sygnały, które mogą wskazywać na 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. Rejestrowanie tych wyjątków i wyświetlanie komunikatów w dzienniku lub na ekranie rozwiązywania problemów to świetny sposób na rozpoczęcie. Zintegrowanie tych informacji z innymi zdarzeniami rejestrowanymi w aplikacji daje dobry wgląd w to, co może powodować problem. Po zidentyfikowaniu błędu w dziennikach musisz ustalić, co on oznacza.

Sprawdzanie błędu

  1. Zapoznaj się z naszą dokumentacją Typowe błędy, w której znajdziesz informacje o najczęstszych błędach. Zawiera on opis komunikatu o błędzie, odpowiednie odniesienia do interfejsu API oraz informacje o tym, jak uniknąć błędu lub go obsłużyć.

  2. Jeśli w naszej 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. Skorzystaj z naszych kanałów pomocy, aby uzyskać dostęp do innych programistów, którzy dzielą się swoimi doświadczeniami związanymi z interfejsem API. Ktoś inny mógł już napotkać i rozwiązać problem, który występuje u Ciebie.

  4. Jeśli napotkasz błędy, które nie są udokumentowane, zgłoś je na forum.

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

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

Po zbadaniu błędu czas ustalić jego główną przyczynę.

Określanie przyczyny

Sprawdź komunikat o wyjątku, aby określić przyczynę błędu. Po zapoznaniu się z odpowiedzią sprawdź żądanie, aby znaleźć możliwą przyczynę. Niektóre komunikaty o błędach interfejsu Google Ads API zawierają znak fieldPathElements w polu locationGoogleAdsError, który wskazuje, 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ę okazać, że aplikacja przekazuje do interfejsu API nieprawidłowe informacje. Zdecydowanie zalecamy korzystanie z interaktywnego środowiska programistycznego (IDE), takiego jak Eclipse (bezpłatne środowisko IDE typu open source, które jest używane głównie do tworzenia aplikacji w Javie, ale ma wtyczki do innych języków), aby ułatwić sobie debugowanie. Umożliwia 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, która odpowiada zmianom, jakie chcesz wprowadzić – interfejs Google Ads API obsługuje aktualizacje rzadkie. Pominięcie pola w masce pola w żądaniu zmiany oznacza, że interfejs API powinien pozostawić to pole bez zmian. Jeśli aplikacja pobiera obiekt, wprowadza w nim zmiany i wysyła go z powrotem, może zapisywać dane w polu, które nie obsługuje aktualizacji. Sprawdź opis pola w dokumentacji referencyjnej, aby dowiedzieć się, czy istnieją ograniczenia dotyczące tego, kiedy lub czy możesz zaktualizować to pole.

Jak uzyskać pomoc

Nie zawsze można samodzielnie zidentyfikować i rozwiązać problem. Zadanie pytania na forum sprawi, że zobaczą je tysiące programistów, którzy mogli mieć do czynienia z tym samym problemem.

W zapytaniach podawaj jak najwięcej informacji. Polecane produkty to:

  • Oczyszczone żądanie i odpowiedź w formacie JSON. Pamiętaj, aby usunąć informacje poufne, takie jak token dewelopera lub token autoryzacji.
  • Fragmenty kodu. Jeśli masz problem związany z konkretnym 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 Google będą mogli znaleźć Twoje zgłoszenie, jeśli zostało ono przesłane w środowisku produkcyjnym. Zalecamy rejestrowanie w logach identyfikatora żądania (requestId) dołączonego jako właściwość w wyjątkach, które obejmują błędy odpowiedzi, a także większej ilości kontekstu niż sam identyfikator żądania.
  • Dodatkowe informacje, takie jak wersja środowiska wykonawczego lub interpretera i platforma, mogą być przydatne podczas rozwiązywania problemów.

Jak naprawić problem

Gdy już zidentyfikujesz problem i znajdziesz rozwiązanie, możesz wprowadzić zmiany i przetestować poprawkę na koncie testowym (zalecane) lub na koncie produkcyjnym (jeśli błąd dotyczy tylko danych na określonym koncie produkcyjnym).

Rozważ udostępnianie

Jeśli na forum pojawiło się pytanie dotyczące błędu, który nie był wcześniej zgłaszany, a Ty znasz rozwiązanie, możesz dodać je do wątku. Następnym razem, gdy programista napotka ten sam problem, będzie mógł go od razu rozwiązać.

Następne kroki

Skoro udało Ci się rozwiązać ten problem, czy widzisz jakieś sposoby na ulepszenie kodu, aby uniknąć go w przyszłości?

Stworzenie dobrego zestawu testów jednostkowych znacznie poprawia jakość i niezawodność kodu. Przyspiesza też proces testowania nowych zmian, aby mieć pewność, że nie wpłynęły one negatywnie na dotychczasowe funkcje. Dobra strategia obsługi błędów jest też kluczowa w przypadku udostępniania wszystkich danych niezbędnych do rozwiązywania problemów.