Ce document décrit les autorisations applicables aux modèles personnalisés côté serveur.
Chaque autorisation est:
- Vérifié par les API qui les nécessitent.
- Détection automatique dans le code JavaScript de bac à sable, en fonction des API utilisées. Cela se produit lorsque des modifications sont apportées dans l'éditeur de modèles personnalisés (pour une boucle de rétroaction rapide) et lorsque le code est compilé (pour vérifier que les autorisations appropriées sont appliquées).
- Modifiables dans l'éditeur de modèles personnalisés, pour rendre l'autorisation plus spécifique.
- interrogeable en JavaScript en 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 l'utilisation des combinaisons de projet, d'ensemble de données et de table spécifiées avec BigQuery. Définir une configuration d'ID de projet sur GOOGLE_CLOUD_PROJECT
permettra d'utiliser la variable d'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>)
Remarque:<operation>
est une chaîne et peut avoir les valeurs suivantes:
- écriture (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 l'utilisation des combinaisons de projet et de chemin d'accès spécifiées (syntaxe générique acceptée) avec Firestore. Définir une configuration d'ID de projet 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
.
Requis par: Firestore
Signature de la requête:queryPermission('access_firestore', <operation>, <options>)
Remarque:<operation>
est une chaîne et peut avoir les valeurs suivantes:
- read - Accorde un accès en lecture et en requête aux API
- write - Accorde un accès en écriture à l'API
- read_write : accorde l'accès aux API de lecture, d'écriture et d'interrogation
<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:accède au corps, aux en-têtes ou à l'état de la réponse.
Configuration:option permettant d'autoriser un accès spécifique ou spécifique, avec des sous-options permettant de contrôler l'accès à divers sous-composants.
Obligatoire par: 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
Display name (Nom à afficher) : accède au stockage de modèles
Description:autorise l'accès au stockage temporaire pour les modèles qui peuvent être conservés pendant la durée de vie du processus côté serveur.
Configuration:aucune
Requis par: templateDataStorage
Signature de la 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 des cookies autorisés pour la lecture.
Requis par: getCookieValues
Signature de la 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:permet de se connecter à la console
Description:permet d'accéder à 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 n'active que la journalisation en mode débogage/preview. Si l'autorisation est refusée, logToConsole
ne génère pas d'erreur, mais supprime le message de journal.
Requis par: logToConsole
Signature de la requête:queryPermission('logging')
Remarque:Détermine si un modèle personnalisé peut être consigné dans la console pour les développeurs.
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 les 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 peut écouter, envoyer ou les deux.
Requis par: addMessageListener
, sendMessage
Signature de la requête:queryPermission('use_message', <usage>, <message type>)
Remarque:Vous pouvez utiliser listen
, send
ou listen_and_send
.
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 sur le conteneur.
Configuration:aucune.
Requis par: getClientName
, getContainerVersion
Signature de la requête:queryPermission('read_container_data')
Remarque:Détermine si un modèle personnalisé peut lire les données de 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 une liste de chemins d'accès de clés autorisés (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 au niveau d'un chemin de clé donné (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énements
Configuration:aucune
Requis par: addEventCallback
Signature de la requête:queryPermission('read_event_metadata')
Remarque:Détermine si un modèle personnalisé peut lire les métadonnées d'événements dans les rappels.
Exemple de code
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_request
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 l'adresse IP distante.
Configuration:option permettant d'autoriser un accès spécifique ou spécifique, avec des sous-options permettant de contrôler 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 entrant 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
Nom à afficher:renvoie une réponse
Description:renvoie la réponse à l'appelant.
Configuration:aucune
Requis par: returnResponse
Signature de la requête:queryPermission('return_response')
Remarque:Cette autorisation ne comporte aucun champ à restreindre et n'est généralement pas demandé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 la requête:queryPermission('run_container')
Remarque:Cette autorisation ne comporte aucun champ à restreindre et n'est généralement pas demandée.
send_http
Nom à afficher:envoie des requêtes HTTP
Description:envoie une requête HTTP à une URL spécifiée.
Obligatoire par: getGoogleScript
, sendEventToGoogleAnalytics
, sendHttpGet
, sendHttpRequest
Signature de la 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 à partir des navigateurs
Description:envoie une requête GET à une URL spécifiée à partir du navigateur.
Requis par: sendPixelFromBrowser
Signature de la requête:queryPermission('send_pixel_from_browser', <url>)
Remarque: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:table des noms de cookies autorisés, chacun avec des restrictions facultatives sur le nom, le domaine, le chemin, l'attribut secure
et la date d'expiration.
Requis par: setCookie
Signature de la requête:queryPermission('set_cookies', <name>, <options>)
Remarque:Détermine si un en-tête "Set-Cookie" donné peut être ajouté à la réponse, en fonction du nom, du domaine, du chemin d'accès, de l'attribut secure
et du délai d'expiration du cookie.
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 des clés privées d'un fichier de clé JSON pour les opérations de chiffrement.
Configuration:liste des ID de clé autorisés. Les ID doivent correspondre aux clés du fichier de clé JSON référencé par la variable d'environnement SGTM_CREDENTIALS
sur le serveur.
Requis par: hmacSha256
Signature de la requête:queryPermission('use_custom_private_keys', <key id>)
Remarque:Ce règlement 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
Nom à afficher:utilise les identifiants par défaut de l'application de Google
Description:utilise les identifiants par défaut de Google pour appeler les API Google.
Configuration:liste des habilitations Google OAuth 2.0 autorisées.
Requis par: getGoogleAuth
Signature de la requête:queryPermission('use_google_credentials', <scopes>)
Remarque:Limite les champs d'application Google OAuth 2.0 autorisés à utiliser avec les API Google.
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);
}