Iubenda logo
Genera tus documentos

Documentación

Tabla de contenidos

Cómo llamar a la API de Privacy Controls and Cookie Solution desde un iframe

Si el servicio Privacy Controls and Cookie Solution está integrado dentro de un iframe, se puede llamar a todos los métodos _iub.cs.api a través de postMessage. A continuación, se muestran algunos ejemplos de cómo se pueden realizar estas llamadas.

postMessage

La API necesita recibir una llamada postMessage en formato JSON:

{ 
    __iubCsCall: { 
        command: <api-function-name>, 
        parameters: [...], 
        callId: <a-string-or-integer> 
   } 
}

Donde:

  • command (string) es el nombre de la función API que quieres llamar
  • parameters (array) es una lista de los parámetros que estás enviando a la función API
  • callId (string | int)es el ID utilizado para verificar que el output es para la misma llamada API

Ejemplos

Suponiendo que el iframe de destino está en https://example.com, podemos hacer esta llamada:

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'isConsentGiven',
            parameters: [],
            callId: 1
        }
    }),
    'https://example.com'
);

Esto llamará a la función API isConsentGiven() de Privacy Controls and Cookie Solution sin ningún parámetro. El output se devolverá a través de postMessage en forma de una cadena JSON.

Para que el evento message capture este output, necesitará un “listener”. Dependiendo del estado actual de Privacy Controls and Cookie Solution, el listener se verá así:

{
    "__iubCsReturn": {
        "returnValue": false,
        "success": true,
        "callId": 1
    }
}

Ejemplo con parámetros

A continuación, te indicamos cómo pasar parámetros a tu llamada postMessage:

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'storeConsent',
            parameters: [{
                consent: false
            }],
            callId: 2
        }
    }),
    'http://localhost:3012'
);

Esta llamada a la función storeConsent() establecerá consent como false y almacenará una cookie de consentimiento.

Actualiza la página para ver los efectos de esta llamada. A continuación, puedes verificar que el consentimiento esté establecido como false evaluando _iub.cs.consent.consent en la consola (debería aparecer false).

El output JSON postMessage debería ser así:

{
    "__iubCsReturn": {
        "success": true,
        "callId": 2
    }
}

Ejemplo de una llamada postMessage mal formulada

Aquí hay un output de una llamada postMessage mal formulada (por ejemplo, una función de API que no existe):

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'Consent',
            parameters: [{
                consent: false
            }],
            callId: 1
        }
    }),
    'http://localhost:3012'
);

Como no hay una función API llamada Consent en Privacy Controls and Cookie Solution, deberías obtener un error como este:

{
    "__iubCsReturn": {
        "returnValue": null,
        "success": false,
        "callId": 1
    }
}

Más información