Autorisations de modèles personnalisés côté serveur

Ce document décrit les autorisations pour les modèles personnalisés côté serveur.


Chaque autorisation est:

  • Vérifié par les API qui en ont besoin.
  • Détection automatique dans le code JavaScript de bac à sable, en fonction des API utilisées. Cela se produit lorsque des modifications sont effectuées dans l'éditeur de modèle personnalisé boucle de rétroaction) et quand le code est compilé (pour vérifier que les bonnes si des autorisations sont appliquées).
  • Modifiable dans l'éditeur de modèles personnalisés pour rendre l'autorisation plus spécifique.
  • Interrogable dans le code JavaScript de bac à sable via l'API queryPermission.

access_bigquery

Display name (Nom à afficher) : accède à BigQuery

Description:autorise l'accès à BigQuery sur Google Cloud Platform.

Configuration:option permettant d'autoriser le projet, l'ensemble de données et la table spécifiés à utiliser avec BigQuery. Le fait de définir une configuration d'ID de projet pour GOOGLE_CLOUD_PROJECT autorisera l'utilisation de l'environnement GOOGLE_CLOUD_PROJECT comme ID de projet lorsque projectId est exclu de BigQuery API parameter.

Requis par: BigQuery

Signature de la requête: queryPermission('access_bigquery', <operation>, <options>)

Remarques : <operation> est une chaîne et peut avoir les valeurs suivantes :

  • write

<options> est un objet contenant les éléments suivants:

{
  'projectId': <project_id>,
  'datasetId': <dataset_id>,
  'tableId': <table_id>
}

Exemple de code

const BigQuery = require('BigQuery');
const queryPermission = require('queryPermission');

const connectionInfo = {
  'projectId': 'gcp-cloud-project-id',
  'datasetId': 'destination-dataset',
  'tableId': 'destination-table',
};

if (queryPermission('access_bigquery', 'write', connectionInfo)) {
  const rows = [{
    'column1': 'String1',
    'column2': 1234,
  }];
  const options = {
    'ignoreUnknownValues': true,
    'skipInvalidRows': false,
  };

  BigQuery.insert(connectionInfo, rows, options)
      .then(data.gtmOnSuccess, data.gtmOnFailure);
}

access_firestore

Display name (Nom à afficher) : accède à Google Firestore

Description:autorise l'accès à Google Firestore.

Configuration:option permettant d'autoriser le projet et le chemin spécifiés (syntaxe générique) compatibles) à utiliser avec Firestore. Définir un ID de projet la configuration de GOOGLE_CLOUD_PROJECT permet d'utiliser La variable d'environnement GOOGLE_CLOUD_PROJECT comme ID de projet lorsque projectId est exclu de Firestore API parameter.

Obligatoire par : Firestore

Signature de la requête: queryPermission('access_firestore', <operation>, <options>)

Remarques:<operation> est une chaîne qui peut avoir les valeurs suivantes:

  • Lecture : accorde un accès en lecture et en requête aux API
  • écriture : accorde un accès en écriture à l'API
  • read_write : accorde un accès aux API de lecture, d'écriture et de requête

<options> est un objet contenant les éléments suivants :

{
  'projectId': <project_id>,
  'path': <path>
}

Exemple de code

const Firestore = require('Firestore');
const queryPermission = require('queryPermission');

const options = {
  'projectId': 'gcp-cloud-project-id',
  'path': 'collection/document',
};

if (queryPermission('access_firestore', 'read', options)) {
  Firestore.read('collection/document', {
    projectId: 'gcp-cloud-project-id',
  }).then(data.gtmOnSuccess, data.gtmOnFailure);
}

access_response

Display name (Nom à afficher) : accède à la réponse.

Description : permet d'accéder au corps, aux en-têtes ou à l'état de la réponse.

Configuration:option permettant d'autoriser un accès spécifique ou un accès spécifique, avec des sous-options pour en contrôlant l'accès à divers sous-composants.

Obligatoire pour : setPixelResponse, setResponseBody, setResponseHeader, setResponseStatus

Signature de la requête : queryPermission('access_response', 'write', <component>[, <optional component name>])

Remarque:Détermine si le composant de réponse HTTP sortant est accessible.

Exemple de code

const queryPermission = require('queryPermission');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
if (queryPermission('access_response', 'write', 'header', 'Content-Type')) {
  setResponseHeader('Content-Type', 'text/plain');
}
if (queryPermission('access_response', 'write', 'body')) {
  setResponseBody('Not Found');
}
if (queryPermission('access_response', 'write', 'status')) {
  setResponseStatus(404);
}

access_template_storage

Nom à afficher:Accesses Template Storage

Description:permet d'accéder à l'espace de stockage temporaire pour les modèles sont conservées pendant toute la durée de vie du processus côté serveur.

Configuration:aucune

Requis par: templateDataStorage

Signature de requête:queryPermission('access_template_storage')

Exemple de code

const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
  const value = templateDataStorage.getItemCopy(key);
}

get_cookies

Nom à afficher:lit la ou les valeurs des cookies

Description:lit les valeurs des cookies portant le nom spécifié.

Configuration:liste des noms de cookies pouvant être lus.

Requis par: getCookieValues

Signature de requête:queryPermission('get_cookies', <name>)

Remarque:Détermine si un cookie peut être lu, en fonction de son nom.

Exemple de code

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

journalisation

Nom à afficher:se connecte à la console

Description:connexion à la Play Console et au mode Aperçu de Tag Manager.

Configuration:option permettant d'activer la journalisation en production. La valeur par défaut est uniquement activer la journalisation dans la version "debug/preview". Si l'autorisation est refusée, logToConsole ne génèrent pas d'erreur, mais supprime le message de journal.

Requis par: logToConsole

Signature de requête:queryPermission('logging')

Remarques:Détermine si un modèle personnalisé peut se connecter à la Play Console.

Exemple de code

const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');

use_message

Nom à afficher:utilise des messages

Description : envoie ou reçoit des messages à l'aide des API addMessageListener ou sendMessage.

Configuration:option permettant de spécifier le type de message et si le modèle que vous pouvez écouter, envoyer ou les deux.

Requis par: addMessageListener, sendMessage

Signature de requête:queryPermission('use_message', <usage>, <message type>)

Remarque:listen, send ou listen_and_send sont acceptés.

Exemple de code

const queryPermission = require('queryPermission');
const sendMessage = require('sendMessage');
if (queryPermission('use_message', 'send', 'set_cookie')) {
  sendMessage('set_cookie', {name: 'foo', value: 'bar'});
}

read_container_data

Nom à afficher:lit les données du conteneur

Description:lit les données concernant le conteneur.

Configuration:aucune.

Requis par: getClientName, getContainerVersion

Signature de la requête : queryPermission('read_container_data')

Remarques:Détermine si un modèle personnalisé peut lire les données du conteneur.

Exemple de code

const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
  return getContainerVersion();
}

read_event_data

Nom à afficher:lit les données d'événement

Description:lit les données de l'événement.

Configuration:option permettant d'autoriser tout accès, ou un accès spécifique contrôlé par Liste des chemins d'accès de clé autorisés (avec syntaxe générique acceptée).

Requis par: getAllEventData, getEventData

Signature de la requête : queryPermission('read_event_data'[, <optional key>])

Remarque:Détermine si un modèle personnalisé peut lire les données d'événement pour une clé donnée. (ou toutes les données d'événement, si aucun chemin d'accès de clé n'est indiqué).

Exemple de code

const getAllEventData = require('getAllEventData');
const queryPermission = require('queryPermission');
if (queryPermission('read_event_data')) {
  return getAllEventData();
}
const getEventData = require('getEventData');
const queryPermission = require('queryPermission');
const keyPath = 'parentField.childField';
if (queryPermission('read_event_data', keyPath)) {
  return getEventData(keyPath);
}

read_event_metadata

Nom à afficher:lit les métadonnées d'événement

Description : lit les métadonnées d'événement dans les rappels d'événement

Configuration:aucune

Requis par: addEventCallback

Signature de requête:queryPermission('read_event_metadata')

Remarque:Détermine si un modèle personnalisé peut lire les métadonnées d'événement dans .

Exemple de code

const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
  addEventCallback((containerId, eventMetadata) => {
    // Read event metadata.
  });
}

read_request

Display name (Nom à afficher) : lit la requête HTTP

Description:lit les en-têtes de requête, les paramètres de requête, le corps, le chemin d'accès ou adresse IP distante.

Configuration:option permettant d'autoriser un accès spécifique ou un accès spécifique, avec des sous-options pour en contrôlant l'accès à divers sous-composants.

Requis par:extractEventsFromMpv1, extractEventsFromMpv2, getRemoteAddress, getRequestBody, getRequestHeader, getRequestPath, getRequestQueryParameter, getRequestQueryParameters getRequestQueryString

Signature de la requête: queryPermission('read_request', <component>[, <optional component name>])

Remarque:Détermine si le composant de réponse HTTP entrante est accessible.

Exemple de code

const queryPermission = require('queryPermission');
const getRequestBody = require('getRequestBody');
const getRequestHeader = require('getRequestHeader');
let body, contentType;
if (queryPermission('read_request', 'body')) {
  body = getRequestBody();
}
if (queryPermission('read_request', 'header', 'content-type')) {
  contentType = getRequestHeader('content-type');
}
if (body && contentType == 'application/json') { ... }

return_response

Display name (Nom à afficher) : renvoie la réponse.

Description : renvoie la réponse à l'appelant.

Configuration:aucune

Requis par: returnResponse

Signature de requête:queryPermission('return_response')

Remarque:Cette autorisation n'a pas de champ à affiner et n'est généralement pas interrogée .

run_container

Nom à afficher:exécute le conteneur

Description:exécute le conteneur avec un événement

Configuration:aucune

Requis par: runContainer

Signature de requête:queryPermission('run_container')

Remarque:Cette autorisation n'a pas de champ à affiner et n'est généralement pas interrogée .

send_http

Nom à afficher:envoie des requêtes HTTP.

Description : envoie une requête HTTP à une URL spécifiée.

Requis par:getGoogleScript, sendEventToGoogleAnalytics, sendHttpGet, sendHttpRequest

Signature de requête:queryPermission('send_http', <url>)

Remarque:Détermine si une requête HTTP peut être effectuée, en fonction de l'URL. Pour garantir une connexion sécurisée, seules les URL sécurisées (HTTPS) sont autorisées.

Exemple de code

const queryPermission = require('queryPermission');
const sendHttpGet = require('sendHttpGet');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_http', url)) {
  sendHttpGet(url);
}

send_pixel_from_browser

Nom à afficher:envoie des pixels depuis les navigateurs.

Description:envoie une requête GET à une URL spécifiée à partir du navigateur.

Requis par: sendPixelFromBrowser

Signature de requête:queryPermission('send_pixel_from_browser', <url>)

Remarques : Détermine si une requête peut être envoyée depuis le navigateur, en fonction de l'URL.

Exemple de code

const queryPermission = require('queryPermission');
const sendPixelFromBrowser = require('sendPixelFromBrowser');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_pixel_from_browser', url)) {
  sendPixelFromBrowser(url);
}

set_cookies

Nom à afficher:définit un cookie.

Description:définit un cookie avec le nom et les paramètres spécifiés.

Configuration:tableau des noms de cookies autorisés, chacun avec des noms de cookies des restrictions sur le nom, le domaine, le chemin d'accès, l'attribut secure et l'expiration.

Requis par: setCookie

Signature de requête:queryPermission('set_cookies', <name>, <options>)

Remarque:Détermine si un "Set-Cookie" donné peut être ajouté en fonction du nom du cookie, du domaine, du chemin d'accès, de l'attribut secure et la date d'expiration.

Exemple de code

const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
  'domain': 'www.example.com',
  'path': '/',
  'max-age': 60*60*24*365,
  'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
  setCookie('info', 'xyz', options);
}

use_custom_private_keys

Nom à afficher:utilise des clés privées personnalisées

Description:utilise les clés privées d'un fichier de clé JSON pour les chiffrements opérations.

Configuration:liste des ID de clé autorisés. Les identifiants doivent correspondre aux clés de Le fichier de clé JSON référencé par la variable d'environnement SGTM_CREDENTIALS sur le serveur.

Requis par: hmacSha256

Signature de requête:queryPermission('use_custom_private_keys', <key id>)

Remarque:Régit la liste des clés privées autorisées.

Exemple de code

const hmacSha256= require('hmacSha256');
const queryPermission = require('queryPermission');
const keyId = 'key1';

let result;
if (queryPermission('use_custom_private_keys', keyId)) {
  result = hmacSha256('my_data', keyId);
}

use_google_credentials

Display name (Nom à afficher) : utilise les identifiants par défaut de l'application Google

Description:utilise les identifiants par défaut de Google pour passer des appels à Google. API.

Configuration:liste des habilitations Google OAuth 2.0 autorisées.

Requis par: getGoogleAuth

Signature de requête:queryPermission('use_google_credentials', <scopes>)

Remarque:Limite les habilitations Google OAuth 2.0 autorisées à utiliser avec Google API.

Exemple de code

const getGoogleAuth = require('getGoogleAuth');
const queryPermission = require('queryPermission');

const scopes = [
  'https://www.googleapis.com/auth/datastore'
];

let auth;
if (queryPermission('use_google_credentials', scopes)) {
  auth = getGoogleAuth(scopes);
}