Weryfikowanie zdarzeń

Wybierz platformę:

Protokół Measurement Protocol w Google Analytics nie zwraca kodów błędówHTTP nawet wtedy, gdy zdarzenie jest zniekształcone lub brakuje w nim wymaganych parametrów. Aby się upewnić, że zdarzenie jest prawidłowe, przetestuj je za pomocą serwera weryfikacyjnego Measurement Protocol, zanim je wdrożysz w środowisku produkcyjnym. Po sprawdzeniu, czy zdarzenia mają prawidłową strukturę, zweryfikuj implementację, aby się upewnić, że używasz prawidłowych kluczy.

Możesz wywołać serwer walidacji bezpośrednio lub użyć narzędzia Event Builder Google Analytics. Narzędzie Event Builder Google Analytics umożliwia interaktywne tworzenie zdarzeń i korzysta z serwera walidacji platformy Measurement Protocol do ich weryfikowania.

Z tego przewodnika dowiesz się, jak wysyłać zdarzenia do serwera weryfikacyjnego Measurement Protocol w Google Analytics i interpretować odpowiedź.

Wysyłanie zdarzeń do weryfikacji

Jedyna różnica między żądaniem zdarzeń wysyłanych do Measurement Protocol a serwerem weryfikacji Measurement Protocol to adres URL.

Serwer URL
Measurement Protocol /mp/collect
Serwer weryfikacyjny Measurement Protocol /debug/mp/collect

Wszystkie pozostałe pola żądania są takie same.

Zalecamy następujące podejście do weryfikacji:

  • Podczas tworzenia aplikacji używaj ścisłych kontroli poprawności, korzystając z jednej z tych opcji:
    • Weryfikuj żądania za pomocą narzędzia do tworzenia zdarzeń.
    • Wysyłaj żądania do serwera weryfikacji z parametrem validation_behavior ustawionym na ENFORCE_RECOMMENDATIONS.
  • W środowisku produkcyjnym wysyłaj żądania bez parametru validation_behavior, aby zminimalizować ilość danych odrzucanych przez Measurement Protocol.

Przykład nieprawidłowego zdarzenia

Poniższy kod pokazuje, jak wysłać nieprawidłowe zdarzenie do serwera weryfikacji Measurement Protocol:

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

fetch(`https://www.google-analytics.com/debug/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    app_instance_id: "APP_INSTANCE_ID",
    validation_behavior: "ENFORCE_RECOMMENDATIONS",
    events: [{
      // Event names must start with an alphabetic character.
      name: "_badEventName",
      params: {},
    }]
  })
});

Przykład prawidłowego zdarzenia

Poniższy kod pokazuje prawidłowe zdarzenie wysyłane do serwera weryfikacji Measurement Protocol. To żądanie spowoduje zwrócenie pustej tablicy validationMessages w odpowiedzi, jak pokazano w sekcji Odpowiedź weryfikacyjna.

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

fetch(`https://www.google-analytics.com/debug/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    app_instance_id: "APP_INSTANCE_ID",
    validation_behavior: "ENFORCE_RECOMMENDATIONS",
    events: [{
      name: "level_up",
      params: {
        level: 2,
        character: "MyHero"
      },
    }]
  })
});

Odpowiedź na weryfikację

Oto odpowiedź serwera weryfikacyjnego na przykład nieprawidłowego zdarzenia.

{
  "validationMessages": [
    {
      "fieldPath": "events",
      "description": "Event at index: [0] has invalid name [_badEventName]. Names must start with an alphabetic character.",
      "validationCode": "NAME_INVALID"
    }
  ]
}

Oto odpowiedź serwera weryfikacyjnego na żądanie, w którym nie wykryto problemów z weryfikacją:

{
  "validationMessages": []
}

Odpowiedź

Klucz Typ Opis
validationMessages Array<ValidationMessage> Tablica komunikatów weryfikacyjnych.

ValidationMessage

Klucz Typ Opis
fieldPath ciąg znaków Ścieżka do nieprawidłowego pola.
description ciąg znaków Opis błędu.
validationCode ValidationCode Kod weryfikacyjny odpowiadający błędowi.

ValidationCode

Wartość Opis
VALUE_INVALID Podana wartość parametru fieldPath jest nieprawidłowa. Zobacz ograniczenia.
VALUE_REQUIRED Nie podano wymaganej wartości atrybutu fieldPath.
NAME_INVALID Podana nazwa jest nieprawidłowa. Zobacz ograniczenia.
NAME_RESERVED Podana nazwa jest jedną z nazw zarezerwowanych. Zobacz zarezerwowane nazwy.
VALUE_OUT_OF_BOUNDS Podana wartość była zbyt duża. Zobacz ograniczenia.
EXCEEDED_MAX_ENTITIES Żądanie zawierało zbyt wiele parametrów. Zobacz ograniczenia.
NAME_DUPLICATED W żądaniu podano tę samą nazwę więcej niż raz.