验证事件

选择您的平台:

Google Analytics Measurement Protocol 不会返回 HTTP 错误代码,即使事件格式不正确或缺少必需参数也是如此。为验证事件是否有效,您应先通过 Measurement Protocol 验证服务器对其进行测试,然后再将其部署到生产环境。 在经过验证,确认事件结构正确无误后,您应验证实现,以确保使用的密钥正确无误。

您可以直接调用验证服务器,也可以使用 Google Analytics 事件构建器。借助 Google Analytics 事件构建器,您可以以交互方式构建事件,并使用 Measurement Protocol 验证服务器来验证这些事件。

本指南介绍了如何将事件发送到 Google Analytics 验证服务器的 Measurement Protocol,以及如何解读响应。

发送事件以进行验证

发送到 Measurement Protocol 和 Measurement Protocol 验证服务器的事件请求的唯一区别在于网址。

服务器 网址
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 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 同一名称在请求中多次提供。