Выберите платформу:
Measurement Protocol для Google Аналитики не возвращает HTTP-код ошибки, даже если событие имеет некорректный формат или не содержит обязательных параметров. Чтобы убедиться в корректности событий, перед развертыванием в рабочей версии обязательно протестируйте их с помощью сервера валидации Measurement Protocol.
Если проверка показала, что структура событий корректна, проверьте реализацию и убедитесь, что используете правильные ключи.
Вы можете вызывать сервер валидации напрямую или использовать конструктор событий Google Аналитики. Конструктор событий Google Аналитики позволяет интерактивно конструировать события и проверять их с помощью сервера валидации Measurement Protocol.
Далее описано, как отправлять события на сервер валидации Measurement Protocol для Google Аналитики и интерпретировать ответ сервера.
Отправка событий на сервер валидации
Запросы для отправки событий на саму платформу Measurement Protocol и на ее сервер валидации отличаются только URL.
| Сервер | URL |
|---|---|
| Measurement Protocol | /mp/collect |
| Сервер валидации Measurement Protocol | /debug/mp/collect |
Остальные поля запроса совпадают.
Мы рекомендуем следующий подход к проверке:
- Во время разработки используйте строгую проверку, выбрав один из следующих вариантов:
- Проверяйте запросы с помощью конструктора событий.
- Отправьте запросы на сервер проверки со значением
validation_behavior, равнымENFORCE_RECOMMENDATIONS.
- В рабочей среде отправляйте запросы без параметра
validation_behavior, чтобы минимизировать количество данных, отклоняемых Measurement Protocol.
Пример недействительного события
Пример запроса к серверу валидации 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: {},
}]
})
});
Пример допустимого события
Пример запроса к серверу валидации Measurement Protocol, содержащего действительное событие: В результате этого запроса в ответе будет пустой массив validationMessages, как показано в разделе Ответ при проверке.
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"
},
}]
})
});
Ответ сервера валидации
Ниже приведен ответ сервера валидации на пример недопустимого события.
{
"validationMessages": [
{
"fieldPath": "events",
"description": "Event at index: [0] has invalid name [_badEventName]. Names must start with an alphabetic character.",
"validationCode": "NAME_INVALID"
}
]
}
Ниже приведен ответ сервера проверки на запрос без проблем с проверкой:
{
"validationMessages": []
}
Ответ
| Ключ | Тип | Описание |
|---|---|---|
validationMessages |
Массив <ValidationMessage> | Массив сообщений от сервера валидации. |
ValidationMessage
| Ключ | Тип | Описание |
|---|---|---|
fieldPath |
string | Путь к недействительному полю. |
description |
string | Описание ошибки. |
validationCode |
ValidationCode | Код ошибки. |
ValidationCode
| Значение | Описание |
|---|---|
VALUE_INVALID |
Недействительное значение параметра fieldPath. См. ограничения.
|
VALUE_REQUIRED |
Не указано значение обязательного параметра fieldPath. |
NAME_INVALID |
Недействительное название. См. ограничения. |
NAME_RESERVED |
Указано название из списка зарезервированных. |
VALUE_OUT_OF_BOUNDS |
Превышена максимальная длина значения. См. ограничения. |
EXCEEDED_MAX_ENTITIES |
Превышено максимальное количество параметров. См. ограничения. |
NAME_DUPLICATED |
Название встречается в запросе более одного раза. |