JavaScript API für Datenschutz und Mitteilungen

Einführung

Diese API bietet Tools für die Interaktion mit Nachrichten, die auf dem Tab „Datenschutz und Mitteilungen“ verfügbar sind. Sie können mit ihr:

  • Nachrichten für einen bestimmten Nutzer unterdrücken
  • Werbeblocker-Status eines Nutzers abfragen
  • Nutzer dürfen ihre Einwilligung widerrufen (falls zutreffend)

Außerdem können Sie die folgenden Tools verwenden, um die Nutzereinwilligung mithilfe einiger branchenüblicher Protokolle einzuholen:

In diesen Fällen wird der Einwilligungsstatus über diese APIs kommuniziert.

Es gibt mehrere Möglichkeiten, diese Nutzernachrichtenfunktion auf deiner Website bereitzustellen:

  1. In den meisten Fällen muss die Tag-Kennzeichnung überhaupt nicht noch einmal erfolgen. Wenn du die Nachricht im entsprechenden Produkt veröffentlichst, werden die vorhandenen Mitteilungen über das Google Publisher-Tag oder das AdSense-Tag bereitgestellt.
  2. Wenn Sie die Mitteilung zum Ausgleich von Werbeumsatz verwenden, müssen Sie Ihrer Seite das Werbeblocker-Tag explizit hinzufügen. Weitere Informationen finden Sie in der Anleitung zum Tagging von Ad Manager und AdSense.

googlefc ist der globale Namespace, den die Nachrichtenfunktion des Nutzers für seine API im JavaScript-Window verwendet.

Feldzusammenfassungen

Name Typ Definition
googlefc.controlledMessagingFunction function(!Object) Eine Funktion, die ermittelt, ob mit der Nachrichtenfunktion fortgesetzt werden soll. Diese Funktion wird für alle Nachrichtentypen unterstützt.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue Verweis auf die Callback-Warteschlange für die asynchrone Ausführung von Nutzernachrichtenabfragen.
googlefc.CallbackQueue !Objekt Der Typ des Callback-Warteschlangenobjekts.
googlefc.AdBlockerStatusEnum !Object<string, number> Eine Aufzählung, die den Werbeblocker-Status des Nutzers darstellt.
googlefc.AllowAdsStatusEnum !Object<string, number> Eine Aufzählung, die den Status von „allow-ads“ des Nutzers darstellt.
googlefc.ccpa.InitialCcpaStatusEnum !Object<string, number> Eine Aufzählung, die den anfänglichen CPRA-Status für den Nutzer darstellt.
googlefc.ccpa.overrideDnsLink nicht definiert|boolesch Ein boolescher Wert, der auf „true“ gesetzt werden kann, um einen benutzerdefinierten „Nicht verkaufen“-Link zu verwenden.

Methodenzusammenfassungen

Name Rückgabetyp Definition
googlefc.showRevocationMessage() nicht definiert Löscht den Einwilligungseintrag und lädt das googlefc-Skript neu, um die für den Nutzer relevante Mitteilung zur EU-Nutzereinwilligung anzuzeigen.
googlefc.getAdBlockerStatus() Zahl Gibt einen Wert in der AdBlockerStatusEnum zurück, je nach Anzeigenblockierungsstatus des Nutzers.
googlefc.getAllowAdsStatus() Zahl Gibt je nach Zulassungsstatus des Nutzers einen Wert im Feld AllowAdsStatusEnum zurück.
googlefc.ccpa.getInitialCcpaStatus() Zahl Gibt einen Wert in der InitialCcpaStatusEnum zurück, je nach dem anfänglichen CPRA-Status des Nutzers.
googlefc.ccpa.openConfirmationDialog(function(boolean)) nicht definiert Öffnet das Dialogfeld zur Bestätigung der Einwilligung, wenn der standardmäßige Link „Nicht verkaufen“ überschrieben wird.

Tests und Fehlerbehebung auf Ihrer Website

„Datenschutz und Mitteilungen“ bietet Debugging- und Testfunktionen, mit denen Sie sehen können, wie bestimmte Nachrichten (oder Kombinationen von Nachrichten) auf Ihrer tatsächlichen Website aussehen.

Voraussetzungen:

  • Die Mitteilung, die Sie als Vorschau ansehen möchten, muss unter der Website veröffentlicht werden, mit der Sie testen

Mit den folgenden Debugging-URL-Parametern können Sie eine Livevorschau auf Ihrer Website aufrufen:

Debug-Parameter Zulässige Werte
fc alwaysshow (zum Auslösen des Debug-/Vorschaumodus)
fctype ab (Mitteilungen an Nutzer mit Werbeblocker), ccpa (Mitteilungen zum Widerruf der CPRA), gdpr (DSGVO-konforme Mitteilung zur EU-Nutzereinwilligung), monetization (Offerwall-Mitteilungen)

Beispiele für die Verwendung der Vorschau auf Ihrer Website (foo.com):

  • CPRA-Mitteilungen testen – http://foo.com?fc=alwaysshow&fctype=ccpa
  • DSGVO-Mitteilung testen – http://foo.com?fc=alwaysshow&fctype=gdpr

Felder: Erläuterungen und Beispiele

googlefc.controlledMessagingFunction {function(!Object)}

Eine Funktion, die bestimmt, ob Nachrichten angezeigt werden sollen oder nicht. Hiermit kann das Rendern von Nachrichten anhand von vom Publisher angegebenen Bedingungen gesteuert werden, z. B. dem Abonnentenstatus oder der Seiten-URL.

Wenn Sie googlefc.controlledMessagingFunction im Fenster definieren, bevor andere Skripts geladen werden, werden Nachrichten erst angezeigt, wenn Sie message.proceed(boolean) aufrufen. Wenn Sie message.proceed(true) aufrufen, können Nachrichten wie gewohnt fortgesetzt werden. Beim Aufrufen von message.proceed(false) werden keine Nachrichten für den Seitenaufruf angezeigt.

Beispiel: Angenommen, dieses Skript enthält die asynchrone Funktion determineIfUserIsSubscriber(), mit der geprüft wird, ob der angemeldete Nutzer ein Abonnent ist.

<head>
  <script>
    window.isSubscriber = undefined;
    function determineIfUserIsSubscriber() {
      if (isSubscriber !== undefined) {
        return isSubscriber;
      }
      return new Promise(resolve => {
        setTimeout(() => {
          // Change this to true if you want to test what subscribers would see.
          window.isSubscriber = false;
          resolve(window.isSubscriber);
        }, 1000);
      });
    }
  </script>
</head>

So kannst du mit googlefc.controlledMessagingFunction die Mitteilung nur für Nichtabonnenten anzeigen lassen.

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
      // Determine if the user is a subscriber asynchronously.
      const isSubscriber = await determineIfUserIsSubscriber();

      if (isSubscriber) {
        // If the user is a subscriber, don't show any messages.
        message.proceed(false);
      } else {
        // Otherwise, show messages as usual.
        message.proceed(true);
      }
    }
  </script>
</head>

Verlage und Webpublisher, die am geschlossenen Offerwall-Betatest teilnehmen, können mit einem zusätzlichen Parameter an message.proceed() festlegen, dass nur die Offerwall unterdrückt werden soll. Dieser Parameter ist ein Array vom Typ googlefc.MessageTypeEnum. Aktuell wird nur die Aufzählung OFFERWALL unterstützt. In Zukunft werden jedoch möglicherweise weitere Nachrichtentypen hinzugefügt.

Beispiel: Sie haben die gleiche determineIfUserIsSubscriber()-Funktion wie oben. Dieses Beispiel zeigt, wie googlefc.controlledMessagingFunction die Auslieferung von Offerwall nur für Abonnenten unterdrückt, ohne andere Nachrichtentypen zu unterdrücken:

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
     // Determine if the Offerwall should display or not.
     const shouldDisplayOfferwall = await determineIfUserIsSubscriber();
     const applicableMessageTypes = [];

     if (!shouldDisplayOfferwall) {
       // Do not show the Offerwall, but allow other message types to display.
       applicableMessageTypes.push(window.googlefc.MessageTypeEnum.OFFERWALL);
       message.proceed(false, applicableMessageTypes);
     } else {
       // Otherwise, show messages as usual.
       message.proceed(true);
     }
    }
  </script>
</head>

googlefc.callbackQueue {!Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue}

Verweisen Sie auf die globale Callback-Warteschlange für die asynchrone Ausführung nachrichtenbezogener Aufrufe. Die einzige unterstützte Methode zum Aufrufen einer Funktion ist das Hinzufügen zu callbackQueue.

Da unterschiedliche Datentypen zu verschiedenen Zeiten verfügbar werden, sollte eine Funktion als Karte hinzugefügt werden, wobei einer der folgenden Strings der Schlüssel ist und die Funktion als Wert ausgeführt werden soll.

Unterstützte Schlüssel:

Schlüsselname Nutzung Relative Latenz
CONSENT_API_READY Funktionen, die mit dem Schlüssel CONSENT_API_READY an die Callback-Warteschlange gesendet werden, werden ausgeführt, wenn die APIs für unterstützte Einwilligungs-Frameworks definiert und aufrufbar sind. Ab jetzt ist die Ausführung aller nachträglich hinzugefügten Funktionen mit CONSENT_API_READY synchron. Weitere Informationen zu den Framework-spezifischen Details finden Sie unten in den IAB-Frameworks. Niedrig
CONSENT_DATA_READY Funktionen, die mit dem Schlüssel CONSENT_DATA_READY an die Callback-Warteschlange gesendet werden, werden ausgeführt, wenn die Nutzereinwilligung bekannt ist, die unter einem unterstützten Einwilligungs-Framework erhoben wurde (entweder aus einer vorherigen Ausführung oder sobald der Nutzer mit der Einwilligungsnachricht interagiert). Ab jetzt ist die Ausführung aller nachträglich hinzugefügten Funktionen mit CONSENT_DATA_READY synchron. Hoch
AD_BLOCK_DATA_READY Funktionen, die mit dem Schlüssel AD_BLOCK_DATA_READY an die Callback-Warteschlange gesendet werden, werden ausgeführt, sobald im Vorgang Daten zu Werbeblockern verfügbar sind. Ab jetzt sind alle weiteren hinzugefügten AD_BLOCK_DATA_READY-Funktionen synchron. Hoch
INITIAL_CCPA_DATA_READY Funktionen, die mit INITIAL_CCPA_DATA_READY an die Callback-Warteschlange gesendet werden, werden ausgeführt, wenn CPRA-Daten im Ablauf verfügbar sind. Beachten Sie, dass alle nachfolgenden Anfragen zu CPRA-Daten durch direktes Aufrufen der US Privacy API (__uspapi) angefordert werden sollten. Medium

googlefc.CallbackQueue {!Object}

Zusammenfassung der Methode:

Name Typ Parameter Rückgabetyp Rolle
push(data) Zahl data: Ein Schlüssel/Wert-Paar mit dem Schlüssel als einer der Datenverfügbarkeitstypen und dem Wert als auszuführende JavaScript-Funktion. Zulässige Datenverfügbarkeitsschlüssel sind CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY und INITIAL_CCPA_DATA_READY. Die Anzahl der bisher hinzugefügten Befehle. Gibt die aktuelle Länge des Arrays zurück. Führt die übergebene Funktion in der Reihenfolge aus, in der die Daten verfügbar werden, und in der Reihenfolge, in der diese Funktionen der Warteschlange hinzugefügt werden.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      if (googlefc.getAdBlockerStatus() == googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER) {
        // Handle a non-ad blocking user.
      }
    }
  });
</script>

googlefc.AdBlockerStatusEnum {!Object<string, number>}

Die verschiedenen Status der Anzeigenblockierung des Nutzers. Die verschiedenen Status sind:

googlefc.AdBlockerStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // The user was running an extension level ad blocker.
  EXTENSION_AD_BLOCKER: 1,
  // The user was running a network level ad blocker.
  NETWORK_LEVEL_AD_BLOCKER: 2,
  // The user was not blocking ads.
  NO_AD_BLOCKER: 3,
};

googlefc.AllowAdsStatusEnum {!Object<string, number>}

Die unterschiedlichen Zulassungsstatus von Nutzern für die Anzeigenblockierung. Die verschiedenen Status sind:

googlefc.AllowAdsStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // User is currently using an ad blocker, was never using an ad blocker, or
  // allowed ads, but not because they saw the Privacy & messaging message.
  ADS_NOT_ALLOWED: 1,
  // User is no longer using an ad blocker after seeing the ad blocking message.
  ADS_ALLOWED: 2,
};

googlefc.ccpa.InitialCcpaStatusEnum{!Object<string, number>}

Die unterschiedlichen Zulassungsstatus von Nutzern für die Anzeigenblockierung. Die verschiedenen Status sind:

googlefc.ccpa.InitialCcpaStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // CPRA does not apply to this user.
  CCPA_DOES_NOT_APPLY: 1,
  // CPPA applies to this user, and the user has not opted out yet.
  NOT_OPTED_OUT: 2,
  // CPPA applies to this user, and the user has opted out.
  OPTED_OUT: 3,
};

googlefc.ccpa.overrideDnsLink{undefined|boolean}

Setzen Sie dieses Feld auf „true“, um den Standardlink „Nicht verkaufen“ auszublenden und einen benutzerdefinierten Link zu verwenden.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  // Signals that the default DNS link will be overridden.
  googlefc.ccpa.overrideDnsLink = true;
</script>

Methoden: Erläuterungen und Beispiele

googlefc.getConsentStatus(): {number}


googlefc.getConsentedProviderIds(): {!Array<string>}

  1. Dadurch wird jetzt beim Aufrufen immer eine leere Liste zurückgegeben.

googlefc.showRevocationMessage(): {undefined}

Löscht den aktuellen Einwilligungseintrag und zeigt die für diesen Nutzer zutreffende Einwilligungsnachricht an. Der Schlüssel, der für diese Funktion angegeben werden soll, ist CONSENT_DATA_READY.

Beispiel:

<button type="button" onclick="googlefc.callbackQueue.push({'CONSENT_DATA_READY': () => googlefc.showRevocationMessage()});">
  Click here to revoke
</button>

googlefc.getAdBlockerStatus(): {number}

Gibt je nach Anzeigenblockierungsstatus des Nutzers einen Wert in „AdBlockerStatusEnum“ zurück. Der Schlüssel, der für diese Funktion angegeben werden soll, ist AD_BLOCK_DATA_READY.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAdBlockerStatus()) {
          case googlefc.AdBlockerStatusEnum.EXTENSION_LEVEL_AD_BLOCKER:
          case googlefc.AdBlockerStatusEnum.NETWORK_LEVEL_AD_BLOCKER:
            // Insert handling for cases where the user is blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER:
            // Insert handling for cases where the user is not blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.UNKNOWN:
            // Insert handling for unknown cases.
            break;
      }
    }
  });
</script>

googlefc.getAllowAdsStatus(): {number}

Gibt einen Wert in der AllowAdsStatusEnum zurück, je nach „allow-ads“-Status des Nutzers. Der Schlüssel, der für diese Funktion angegeben werden soll, ist AD_BLOCK_DATA_READY.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAllowAdsStatus()) {
        case googlefc.AllowAdsStatusEnum.ADS_NOT_ALLOWED:
          // Insert handling for cases where the user has not allowed ads.
          // The user may have never been an ad blocker.
          break;
        case googlefc.AllowAdsStatusEnum.ADS_ALLOWED:
          // Insert handling for cases where the user saw the ad blocking
          // message and allowed ads on the site.
          break;
        case googlefc.AllowAdsStatusEnum.UNKNOWN:
          // Insert handling for unknown cases.
          break;
      }
    }
  });
</script>

googlefc.ccpa.getInitialCcpaStatus(): {number}

Gibt einen Wert in der InitialCcpaStatusEnum zurück, je nach CPRA-Status des Nutzers. Der Schlüssel, der für diese Funktion angegeben werden soll, ist INITIAL_CCPA_DATA_READY. Beachten Sie, dass alle nachfolgenden Anfragen zu CPRA-Daten durch direktes Aufrufen der US Privacy API (__uspapi) abgerufen werden sollten.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'INITIAL_CCPA_DATA_READY':
    () => {
      switch (googlefc.ccpa.getInitialCcpaStatus()) {
        case googlefc.ccpa.InitialCcpaStatusEnum.CCPA_DOES_NOT_APPLY:
          // Insert handling for cases where the user is not CPRA eligible.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // not opted out.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // opted out.
          break;
      }
    }
  });
</script>

googlefc.ccpa.openConfirmationDialog(function(boolean)): {undefined}

Öffnet das CPRA-Bestätigungsdialogfeld, wenn der standardmäßige Link „Nicht verkaufen“ überschrieben wird. Wenn der Nutzer mit dem Bestätigungsdialog interagiert, wird die bereitgestellte Callback-Funktion mit true aufgerufen, wenn sich der Nutzer gegen die Deaktivierung entscheidet, und mit false andernfalls.

Beispiel:

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  // Insert handling for user opt-out status here.
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>

Wenn Sie mit Lösungen von Google zur Einwilligungsverwaltung die DSGVO-Einwilligung für das IAB TCF 2.0 einholen möchten, sollten Sie die IAB TCF 2 API verwenden.

Dazu können Sie die CONSENT_API_READY

Schlüssel der Callback-Warteschlange, damit entsprechende Callbacks nur aufgerufen werden, wenn auf der Seite die API für Version 2 des IAB TCF definiert ist. Dieser Parameter sollte zusammen mit dem Befehl 'addEventListener' der IAB TCF v2 API verwendet werden, da die Nutzereinwilligung mit dem synchronen Befehl 'getTCData' noch nicht verfügbar ist.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_API_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    () => __tcfapi('addEventListener', 2.0, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times as user completes consent flow.
    })
  });
</script>

Dazu können Sie die CONSENT_DATA_READY

Schlüssel der Callback-Warteschlange, damit entsprechende Callbacks nur dann aufgerufen werden, wenn Nutzereinwilligungen erhoben und mit der IAB TCF 2 API abgerufen werden. Dies kann in Verbindung mit dem Befehl 'getTCData' verwendet werden, da Sie den Einwilligungsstatus des Nutzers mithilfe von synchronen Methoden abrufen können.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_DATA_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __tcfapi('getTCData', 2.0, (data, success) => {
      // Do something with consent data value.
    })
  });
</script>

Lösungen zur Google-Einwilligungsverwaltung mit dem IAB GPP Framework für CPRA verwenden

Wenn Sie Lösungen zur Einwilligungsverwaltung von Google einsetzen, um CPRA-Deaktivierungen im Rahmen des IAB GPP-Frameworks zu erfassen, sollten Sie die IAB GPP API verwenden.

Aufgrund der Ablehnungsmöglichkeit der CPRA-Verordnung können Sie den Callback-Schlüssel CONSENT_API_READY oder CONSENT_DATA_READY verwenden, damit die IAB GPP API zum Zeitpunkt des Callbacks aufgerufen werden kann und Daten zur Nutzereinwilligung zurückgeben.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __uspapi('getUSPData', 1, (data, success) => {
      // Do something with consent data value.
    })
  });
</script>

Lösungen zur Einwilligungsverwaltung von Google mit dem IAB GPP-Framework für CPRA und einem benutzerdefinierten Link „Nicht verkaufen“ verwenden

Wenn Sie Lösungen zur Einwilligungsverwaltung von Google einsetzen, um CPRA-Deaktivierungen im Rahmen des IAB GPP-Frameworks zu erfassen, können Sie einen benutzerdefinierten Link „Nicht verkaufen“ angeben, indem Sie das Flag googlefc.ccpa.overrideDnsLink auf true setzen.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Signals that the default DNS link will be overridden.
  window.googlefc.ccpa.overrideDnsLink = true;

  // Register the callback for the initial CPRA data.
  window.googlefc.callbackQueue.push({
      'INITIAL_CCPA_DATA_READY': () => {
        if (googlefc.ccpa.getInitialCcpaStatus() ===
            googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT) {
          // TODO: Display custom CPRA Do Not Sell link here.
        }
      }
    });
</script>

So wird der standardmäßige Link „Nicht verkaufen“ nicht gerendert. Sie sind dafür verantwortlich, Ihren eigenen „Nicht verkaufen“-Link zu rendern, der den CPRA-Anforderungen entspricht. Anschließend müssen Sie die Nutzerinteraktion mit Ihrem benutzerdefinierten „Nicht verkaufen“-Link verarbeiten, indem Sie das CPRA-Bestätigungsdialogfeld aufrufen.

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  if (userOptedOut) {
    // TODO: Hide custom CPRA Do Not Sell link here.
  }
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>