[Alpha]{class="badge informative"}

setConsent (服务器SDK)

本页介绍了Server SDK setConsent方法。 对于Web SDK,请参阅setConsent.

setConsent方法告知服务器SDK是否可以发送访客数据(选择启用)或必须放弃该数据(选择禁用)。 SDK将访客的首选项发送到Edge Network,然后通过您传递到forRequest的Cookie服务将结果存储在kndctr_<orgId>_consent Cookie中。

SDK支持以下同意标准:

仅当实例包含Consent组件(默认情况下包括createInstance)时,此方法才可用。

为访客调用setConsent call

同意属于单个访客,因此始终在该访客的forRequest句柄上调用setConsent,而不是在顶级实例上调用。 以下示例使用Adobe 2.0标准:

const visitor = alloy.forRequest({ request: req, cookie: visitorCookies });

await visitor.setConsent({
  consent: [{
    standard: "Adobe",
    version: "2.0",
    value: {
      collect: { val: "y" }
    }
  }]
});

以下示例使用Adobe 1.0标准:

await visitor.setConsent({
  consent: [{
    standard: "Adobe",
    version: "1.0",
    value: { general: "in" }
  }]
});

以下示例使用IAB TCF 2.0标准:

await visitor.setConsent({
  consent: [{
    standard: "IAB TCF",
    version: "2.0",
    value: "CO052l-O052l-DGAMBFRACBgAIBAAAAAAIYgEawAQEagAAAA",
    gdprApplies: true
  }]
});

如果您使用IAB TCF标准并且希望获得访客配置文件上的同意数据,则还应在事件xdm对象中包含IAB同意信息。 SDK不会自动将其添加到事件。

SDK通过您传递给forRequest的cookie服务读取和写入同意Cookie:

  • 如果您的Cookie服务读取访客的浏览器Cookie,则之前在服务器上或具有Web SDK的浏览器中记录的访客同意已经适用。 在访客首选项更改之前,您无需再次调用setConsent。
  • 如果您没有传递Cookie服务,SDK将忘记请求之间的同意。 每个请求都从defaultConsent开始。

如果已经为访客发送了相同的偏好设置,SDK会跳过请求。 它会跟踪通过storage服务发送的首选项,因此只有将该访客的storage服务传递到forRequest时,此检查才会在请求间运行。 否则,每个调用都会向Edge Network发送请求,即使访客的首选项未发生更改也是如此。 当访客做出同意选择或更改同意选择时调用setConsent,而不是在每个请求时调用。

请求未经过身份验证。 确保您的数据流接受未经身份验证的请求。 请参阅设置数据流访问类型。

选项 options

setConsent方法接受具有以下属性的对象:

  • consent:必需。 同意对象的数组,每个对象均采用一种受支持的标准。
  • identityMap:访客的标识映射。 Edge Network在设备级别应用同意,因此它仅使用此映射中的ECID。
  • edgeConfigOverrides:此请求的数据流配置覆盖对象。

结果对象 result

当Edge Network接受同意首选项时,setConsent方法返回使用空对象解析的promise。

recommendation-more-help
experience-platform-help-collection