במסמך הזה מפורטות ההרשאות לתבניות בהתאמה אישית בצד השרת.
כל הרשאה:
- נבדקים על ידי ממשקי API שדורשים אותם.
- זיהוי אוטומטי ב-JavaScript בארגז חול, על סמך ממשקי ה-API שבהם נעשה שימוש. זה קורה כשמבצעים שינויים בעורך התבניות בהתאמה אישית (כדי לקבל משוב מהיר) וכשמפעילים את הידור הקוד (כדי לוודא שההרשאות הנכונות נאכפות).
- אפשר לערוך את ההרשאה הזו בעורך התבנית בהתאמה אישית, כדי שהיא תהיה ספציפית יותר.
- אפשר לשלוח שאילתות ב-JavaScript בארגז חול באמצעות ה-API של
queryPermission
.
access_bigquery
שם לתצוגה: גישה ל-BigQuery
תיאור: הרשאה שמאפשרת גישה ל-BigQuery ב-Google Cloud Platform.
הגדרה: אפשרות לאפשר שימוש בפרויקטים, במערכי נתונים ובטבלאות ספציפיים ב-BigQuery. הגדרת מזהה הפרויקט בתור GOOGLE_CLOUD_PROJECT
תאפשר להשתמש במשתנה הסביבה GOOGLE_CLOUD_PROJECT
בתור מזהה הפרויקט כש-projectId
לא נכלל ב-BigQuery API
parameter
.
חובה על פי: BigQuery
חתימה של שאילתה:
queryPermission('access_bigquery', <operation>, <options>)
הערות: <operation>
היא מחרוזת, והיא יכולה לקבל את הערכים הבאים:
- write
<options>
הוא אובייקט שמכיל את הפריטים הבאים:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
קוד לדוגמה
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
השם המוצג: גישה ל-Google Firestore
תיאור: הרשאה שמאפשרת גישה ל-Google Firestore.
הגדרה: אפשרות לאפשר שילובים ספציפיים של פרויקט ונתיב (בתמיכה בתחביר של תווים כלליים לחיפוש) לשימוש ב-Firestore. הגדרת מזהה הפרויקט בתור GOOGLE_CLOUD_PROJECT
תאפשר להשתמש במשתנה הסביבה GOOGLE_CLOUD_PROJECT
בתור מזהה הפרויקט כש-projectId
לא נכלל ב-Firestore API parameter
.
חובה על פי: Firestore
חתימה של שאילתה:
queryPermission('access_firestore', <operation>, <options>)
הערות: <operation>
היא מחרוזת, והיא יכולה לקבל את הערכים הבאים:
- read – הרשאה לקריאה ולשליחת שאילתות לממשקי API
- write – הענקת גישה ל-API לכתיבה
- read_write – הרשאה לקריאה, לכתיבה ולשליחת שאילתות לממשקי API
<options>
הוא אובייקט שמכיל את הפריטים הבאים:
{
'projectId': <project_id>,
'path': <path>
}
קוד לדוגמה
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
שם תצוגה: גישה לתגובה
תיאור: גישה לגוף התגובה, לכותרות או לסטטוס.
הגדרה: אפשרות לאפשר גישה כלשהי או גישה ספציפית, עם אפשרויות משנה לשליטה בגישה לרכיבי משנה שונים.
חובה לפי: setPixelResponse
, setResponseBody
,
setResponseHeader
, setResponseStatus
חתימה של שאילתה:
queryPermission('access_response', 'write', <component>[, <optional component name>])
הערות: קובעת אם אפשר לגשת לרכיב התגובה היוצאת של HTTP.
קוד לדוגמה
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
שם תצוגה: גישה לאחסון של תבניות
תיאור: הרשאה לגישה לאחסון זמני של תבניות שיכולות להישאר במהלך כל חיי התהליך בצד השרת.
הגדרה: ללא הגדרה
חובה על פי: templateDataStorage
חתימה של שאילתה: queryPermission('access_template_storage')
קוד לדוגמה
const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateDataStorage.getItemCopy(key);
}
get_cookies
שם תצוגה: קריאת הערכים של קובצי ה-Cookie
תיאור: קריאת הערכים של קובצי ה-Cookie עם השם שצוין.
הגדרה: רשימה של שמות קובצי cookie שמותר לקרוא.
חובה על פי: getCookieValues
חתימה של שאילתה: queryPermission('get_cookies', <name>)
הערות: קובעת אם ניתן לקרוא קובץ cookie, בהתאם לשם שלו.
קוד לדוגמה
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
רישום ביומן
שם תצוגה: רישום במסוף
תיאור: רישום ביומן של Developer Console ושל מצב התצוגה המקדימה ב-Tag Manager.
הגדרה: אפשרות להפעיל רישום ביומן בסביבת הייצור. ברירת המחדל היא הפעלת רישום ביומן רק במהלך ניפוי באגים או תצוגה מקדימה. אם ההרשאה תידחה, הפונקציה logToConsole
לא תשליך שגיאה, אבל היא תדכא את הודעת היומן.
חובה על פי: logToConsole
חתימה של שאילתה: queryPermission('logging')
הערות: קובעת אם תבנית בהתאמה אישית יכולה להיכנס ליומן במסוף הפיתוח.
קוד לדוגמה
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
שם תצוגה: שימוש בהודעות
תיאור: שליחה או קבלה של הודעות באמצעות ממשקי ה-API addMessageListener
או sendMessage
.
הגדרה: אפשרות לציין את סוג ההודעה ואת היכולות של התבנית: האם היא יכולה להאזין, לשלוח או גם וגם.
נדרש על ידי: addMessageListener
, sendMessage
חתימה של שאילתה: queryPermission('use_message', <usage>, <message type>)
הערות: הערך של Usage יכול להיות listen
, send
או listen_and_send
.
קוד לדוגמה
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
שם מוצג: קריאת נתונים של מאגר תגים
תיאור: קריאת נתונים על המאגר.
הגדרה: אין.
נדרש על ידי: getClientName
, getContainerVersion
חתימה של שאילתה: queryPermission('read_container_data')
הערות: קובע אם תבנית בהתאמה אישית יכולה לקרוא נתוני מאגר.
קוד לדוגמה
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
read_event_data
שם לתצוגה: קריאת נתוני אירוע
תיאור: קריאת נתונים מהאירוע.
הגדרה: אפשרות לאפשר גישה לכל אחד, או גישה ספציפית שמנוהלת על ידי רשימה של נתיבים מותרים למפתחות (יש תמיכה בסינטקס של תווים כלליים לחיפוש).
נדרש על ידי: getAllEventData
, getEventData
חתימה של שאילתה: queryPermission('read_event_data'[, <optional key>])
הערות: קובע אם תבנית בהתאמה אישית יכולה לקרוא נתוני אירועים בנתיב מפתח נתון (או את כל נתוני האירועים, אם לא צוין נתיב מפתח).
קוד לדוגמה
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
שם לתצוגה: קריאת מטא-נתונים של אירועים
תיאור: קריאת מטא-נתונים של אירוע בקריאות חוזרות (callbacks)
הגדרה: ללא הגדרה
חובה על פי: addEventCallback
חתימה של שאילתה: queryPermission('read_event_metadata')
הערות: קובעת אם תבנית בהתאמה אישית יכולה לקרוא מטא-נתונים של אירועים בקריאות חזרה (callbacks).
קוד לדוגמה
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_request
שם תצוגה: קריאת בקשת HTTP
תיאור: קריאת כותרות הבקשה, פרמטרים של שאילתות, גוף הבקשה, הנתיב או כתובת ה-IP המרוחקת.
הגדרה: אפשרות לאפשר גישה כלשהי או גישה ספציפית, עם אפשרויות משנה לשליטה בגישה לרכיבי משנה שונים.
נדרש על ידי: extractEventsFromMpv1
, extractEventsFromMpv2
,
getRemoteAddress
, getRequestBody
, getRequestHeader
,
getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
,
getRequestQueryString
חתימה של שאילתה:
queryPermission('read_request', <component>[, <optional component name>])
הערות: קובעת אם אפשר לגשת לרכיב התגובה הנכנסת של HTTP.
קוד לדוגמה
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
שם תצוגה: הפונקציה מחזירה תגובה
תיאור: החזרת תגובה למתקשר.
הגדרה: ללא הגדרה
חובה על פי: returnResponse
חתימה של שאילתה: queryPermission('return_response')
הערות: אין להרשאה הזו שדות לצמצום, ובדרך כלל לא שולחים עליה שאילתה.
run_container
שם תצוגה: הפעלה של מאגר הנתונים
תיאור: הפעלה של מאגר התגים עם אירוע
הגדרה: ללא הגדרה
חובה על פי: runContainer
חתימה של שאילתה: queryPermission('run_container')
הערות: אין להרשאה הזו שדות לצמצום, ובדרך כלל לא שולחים עליה שאילתה.
send_http
שם מוצג: שליחת בקשות HTTP
תיאור: שליחת בקשת HTTP לכתובת URL שהוגדרה.
חובה לפי: getGoogleScript
, sendEventToGoogleAnalytics
,
sendHttpGet
, sendHttpRequest
חתימה של שאילתה: queryPermission('send_http', <url>)
הערות: קובעת אם ניתן לשלוח בקשת HTTP, בהתאם לכתובת ה-URL. כדי להבטיח חיבור מאובטח, מותר להשתמש רק בכתובות URL מאובטחות (HTTPS).
קוד לדוגמה
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
שם מוצג: שליחת פיקסלים מדפדפנים
תיאור: נשלחת בקשת GET מהדפדפן לכתובת URL ספציפית.
חובה על פי: sendPixelFromBrowser
חתימה של שאילתה: queryPermission('send_pixel_from_browser', <url>)
הערות: קובעת אם אפשר לשלוח בקשה מהדפדפן, בהתאם לכתובת ה-URL.
קוד לדוגמה
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
שם תצוגה: הגדרת קובץ Cookie
תיאור: הגדרה של קובץ Cookie עם השם והפרמטרים שצוינו.
הגדרה: טבלה של שמות קובצי cookie מותרים, עם הגבלות אופציונליות על השם, הדומיין, הנתיב, המאפיין secure
ותוקף התוקף.
חובה על פי: setCookie
חתימה של שאילתה: queryPermission('set_cookies', <name>, <options>)
הערות: קובעת אם אפשר להוסיף כותרת 'Set-Cookie' נתונה לתגובה, בהתאם לשם קובץ ה-cookie, לדומיין, לנתיב, למאפיין secure
ולתוקף התפוגה.
קוד לדוגמה
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
שם מוצג: שימוש במפתחות פרטיים בהתאמה אישית
תיאור: שימוש במפתחות פרטיים מקובץ מפתחות JSON לפעולות קריפטוגרפיות.
Configuration: רשימה של מזהי מפתחות מותרים. המזהים צריכים להתאים למפתחות בקובץ מפתח ה-JSON שמשתנה הסביבה SGTM_CREDENTIALS
מפנה אליו בשרת.
חובה על פי: hmacSha256
חתימה של שאילתה: queryPermission('use_custom_private_keys', <key id>)
הערות: קובעת את רשימת המפתחות הפרטיים המותרים.
קוד לדוגמה
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
שם לתצוגה: שימוש ב-Application Default Credentials של Google
תיאור: שימוש בפרטי הכניסה שמוגדרים כברירת מחדל ב-Google כדי לשלוח קריאות ל-Google APIs.
הגדרה: רשימה של היקפי הרשאות OAuth 2.0 של Google שמותר להשתמש בהם.
חובה על פי: getGoogleAuth
חתימה של שאילתה: queryPermission('use_google_credentials', <scopes>)
הערות: הגבלת היקפי ההרשאות של OAuth 2.0 של Google לשימוש ב-Google APIs.
קוד לדוגמה
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);
}