Выберите свою платформу:
Протокол измерения Google Analytics не возвращает коды ошибок HTTP , даже если событие имеет некорректный формат или отсутствуют необходимые параметры. Чтобы убедиться в корректности ваших событий, перед развертыванием в рабочей среде следует протестировать их на сервере проверки протокола измерения. После проверки правильности структуры событий следует проверить реализацию , чтобы убедиться в использовании правильных ключей.
Вы можете либо напрямую обратиться к серверу проверки, либо использовать конструктор событий Google Analytics . Конструктор событий Google Analytics позволяет интерактивно создавать события и использует сервер проверки Measurement Protocol для их проверки.
В этом руководстве описано, как отправлять события на сервер проверки Measurement Protocol for Google Analytics 4 и интерпретировать ответ.
Отправка событий на проверку
Единственное различие между запросами на события, отправляемыми в протокол измерения и на сервер проверки протокола измерения, заключается в URL-адресе.
| Сервер | URL |
|---|---|
| Протокол измерений | /mp/collect |
| Сервер проверки протокола измерений | / debug /mp/collect |
Все остальные поля запроса остаются без изменений.
Мы рекомендуем следующий подход к валидации:
- В процессе разработки используйте строгие проверки достоверности данных, выбрав один из следующих вариантов:
- Проверяйте запросы с помощью конструктора событий .
- Отправляйте запросы на сервер валидации, установив
validation_behaviorв значениеENFORCE_RECOMMENDATIONS.
- В производственной среде отправляйте запросы без параметра
validation_behavior, чтобы свести к минимуму количество данных, отклоняемых протоколом 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 | Array< ValidationMessage > | Массив проверочных сообщений. |
ValidationMessage
| Ключ | Тип | Описание |
|---|---|---|
fieldPath | нить | Неверный путь к полю. |
description | нить | Описание ошибки. |
validationCode | ValidationCode | Код проверки, соответствующий ошибке. |
ValidationCode
| Ценить | Описание |
|---|---|
VALUE_INVALID | Значение, указанное для fieldPath недопустимо. См. ограничения . |
VALUE_REQUIRED | Не было указано обязательное значение для fieldPath . |
NAME_INVALID | Указанное имя недействительно. См. ограничения . |
NAME_RESERVED | Указанное имя входит в число зарезервированных. См. зарезервированные имена . |
VALUE_OUT_OF_BOUNDS | Предоставленное значение оказалось слишком большим. См. ограничения . |
EXCEEDED_MAX_ENTITIES | В запросе было слишком много параметров. См. ограничения . |
NAME_DUPLICATED | Одно и то же имя было указано в запросе более одного раза. |