Bu dokümanda, sunucu tarafı özel şablonların izinleri ana hatlarıyla açıklanmaktadır.
Her izin:
- Bunları gerektiren API'ler tarafından kontrol edilir.
- Kullanılan API'lere bağlı olarak korumalı alana alınmış JavaScript'te otomatik olarak algılanır. Bu, özel şablon düzenleyicide düzenlemeler yapıldığında gerçekleşir (hızlı bir geri bildirim döngüsü) ve kod derlendiğinde (doğru öğenin doğru emin olun.
- İznin daha ayrıntılı olması için özel şablon düzenleyicide düzenlenebilir.
queryPermission
API aracılığıyla korumalı alana alınan JavaScript'te sorgulanabilir.
access_bigquery
Görünen ad: BigQuery'ye erişir
Açıklama: Google Cloud Platform'da BigQuery'ye erişim sağlar.
Yapılandırma: Belirtilen proje, veri kümesi ve tabloya izin verme seçeneği
farklı kombinasyonlara öncelik verin. Şu proje kimliği yapılandırmasını ayarlama:
GOOGLE_CLOUD_PROJECT
, GOOGLE_CLOUD_PROJECT
ortamının kullanılmasına izin verir
değişkenini projectId
, BigQuery API
parameter
dışında tuttuğunuzda proje kimliği olarak ayarlayın.
Zorunlu kılma tarihi: BigQuery
Sorgu imzası:
queryPermission('access_bigquery', <operation>, <options>)
Notlar: <operation>
bir dizedir ve aşağıdaki değerleri içerebilir:
- write
<options>
, şu öğeleri içeren bir nesnedir:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
Örnek kod
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
Görünen ad: Google Firestore'a erişir
Açıklama: Google Firestore'a erişim izni verir.
Yapılandırma: Belirtilen proje ve yola (joker karakter söz dizimi) izin verme seçeneği
kombinasyonlarını doğrulayın. Proje kimliğini belirleme
GOOGLE_CLOUD_PROJECT
yapılandırması,
projectId
olduğunda proje kimliği olarak GOOGLE_CLOUD_PROJECT
ortam değişkeni
, Firestore API parameter
kapsamının dışında tutuluyor.
Zorunlu kılma tarihi: Firestore
Sorgu imzası:
queryPermission('access_firestore', <operation>, <options>)
Notlar: <operation>
bir dizedir ve aşağıdaki değerleri içerebilir:
- okuma - API'leri okuma ve sorgulama erişimi verir
- yazma - Yazma API'sı için erişim izni verir
- okuma_yazma - Okuma, yazma ve sorgu API'lerine erişim izni verir
<options>
, şu öğeleri içeren bir nesnedir:
{
'projectId': <project_id>,
'path': <path>
}
Örnek kod
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
Görünen ad: Yanıta erişir
Açıklama: Yanıt gövdesine, üstbilgilerine veya durumuna erişir.
Yapılandırma: Herhangi bir erişime veya belirli bir erişime izin verme, bununla ilgili alt seçeneklerle birlikte çeşitli alt bileşenlere erişimi kontrol etme.
Zorunlu kılma tarihi: setPixelResponse
, setResponseBody
,
setResponseHeader
, setResponseStatus
Sorgu imzası:
queryPermission('access_response', 'write', <component>[, <optional component name>])
Notlar: Giden HTTP yanıtı bileşenine erişilip erişilemeyeceğini belirler.
Örnek kod
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
Görünen ad: Şablon Depolama alanına erişir
Açıklama: Aşağıdaki işlemleri yapabilecek şablonlar için geçici depolama alanına erişim izni verir: sunucu tarafı süreci boyunca kalıcı hale gelir.
Yapılandırma: Yok
Zorunlu kılma tarihi: templateDataStorage
Sorgu imzası: queryPermission('access_template_storage')
Örnek kod
const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateDataStorage.getItemCopy(key);
}
get_cookies
Görünen ad: Çerez değerlerini okur
Açıklama: Belirtilen ada sahip çerezlerin değerlerini okur.
Yapılandırma: Okunmasına izin verilen çerez adlarının listesi.
Zorunlu kılma tarihi: getCookieValues
Sorgu imzası: queryPermission('get_cookies', <name>)
Notlar: Bir çerezin, adına bağlı olarak okunup okunamayacağını belirler.
Örnek kod
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
logging
Görünen ad: Konsolda günlük olarak gösterilir.
Açıklama: Geliştirici konsolunda ve Etiket Yöneticisi'nin önizleme modunda günlük kaydı oluşturur.
Yapılandırma: Üretimde günlük kaydını etkinleştirme seçeneği. Varsayılan olarak yalnızca şu değere ayarlanır:
hata ayıklama/önizleme bölümünde oturum açmayı etkinleştirin. İzin reddedilirse logToConsole
şunları yapar:
hata bildirmez ancak günlük mesajını gizler.
Zorunlu kılma tarihi: logToConsole
Sorgu imzası: queryPermission('logging')
Notlar: Özel bir şablonun geliştirici konsoluna giriş yapıp yapamayacağını kontrol eder.
Örnek kod
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
Görünen ad: Mesajları kullanır
Açıklama: addMessageListener
veya
sendMessage
API.
Yapılandırma: İleti türünü ve şablonun gönderebilir veya her ikisini birden yapabilir.
Zorunlu kılma tarihi: addMessageListener
, sendMessage
Sorgu imzası: queryPermission('use_message', <usage>, <message type>)
Notlar: Kullanım; listen
, send
veya listen_and_send
olabilir.
Örnek kod
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
Görünen ad: Kapsayıcı verilerini okur
Açıklama: Kapsayıcıyla ilgili verileri okur.
Yapılandırma: Yok.
Zorunlu kılma tarihi: getClientName
, getContainerVersion
Sorgu imzası: queryPermission('read_container_data')
Notlar: Özel bir şablonun, kapsayıcı verilerini okuyup okuyamayacağını kontrol eder.
Örnek kod
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
read_event_data
Görünen ad: Etkinlik verilerini okur
Açıklama: Etkinlikten alınan verileri okur.
Yapılandırma: tarafından kontrol edilen herhangi bir erişime veya belirli bir erişime izin verme İzin verilen anahtar yollarının listesi (joker karakter söz dizimi desteklenir).
Zorunlu kılma tarihi: getAllEventData
, getEventData
Sorgu imzası: queryPermission('read_event_data'[, <optional key>])
Notlar: Özel bir şablonun, belirli bir anahtardaki etkinlik verilerini okuyup okuyamayacağını kontrol eder yolu (veya anahtar yolu belirtilmediyse tüm etkinlik verilerini) içerir.
Örnek kod
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
Görünen ad: Etkinlik meta verilerini okur
Açıklama: Etkinlik Geri Çağırmalarındaki etkinlik meta verilerini okur
Yapılandırma: Yok
Zorunlu kılma tarihi: addEventCallback
Sorgu imzası: queryPermission('read_event_metadata')
Notlar: Özel bir şablonun, etkinlik meta verilerini şurada okuyup okuyamayacağını kontrol eder: daha fazla bilgi edindiniz.
Örnek kod
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_request
Görünen ad: HTTP isteğini okur
Açıklama: İstek başlıklarını, sorgu parametrelerini, gövdeyi, yolu veya uzak IP adresi.
Yapılandırma: Herhangi bir erişime veya belirli bir erişime izin verme, bununla ilgili alt seçeneklerle birlikte çeşitli alt bileşenlere erişimi kontrol etme.
Zorunlu kılma tarihi: extractEventsFromMpv1
, extractEventsFromMpv2
,
getRemoteAddress
, getRequestBody
, getRequestHeader
,
getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
,
getRequestQueryString
Sorgu imzası:
queryPermission('read_request', <component>[, <optional component name>])
Notlar: Gelen HTTP yanıt bileşenine erişilip erişilemeyeceğini belirler.
Örnek kod
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
Görünen ad: Yanıt döndürür
Description: Arayana yanıtı döndürür.
Yapılandırma: Yok
Zorunlu kılma tarihi: returnResponse
Sorgu imzası: queryPermission('return_response')
Notlar: Bu izinde daraltılacak alan yoktur ve genellikle sorgulanmaz .
run_container
Görünen ad: Kapsayıcıyı çalıştırır.
Açıklama: Kapsayıcıyı bir etkinlikle çalıştırır
Yapılandırma: Yok
Zorunlu kılma tarihi: runContainer
Sorgu imzası: queryPermission('run_container')
Notlar: Bu izinde daraltılacak alan yoktur ve genellikle sorgulanmaz .
send_http
Görünen ad: HTTP istekleri gönderir
Açıklama: Belirtilen URL'ye bir HTTP isteği gönderir.
Zorunlu kılma tarihi: getGoogleScript
, sendEventToGoogleAnalytics
,
sendHttpGet
, sendHttpRequest
Sorgu imzası: queryPermission('send_http', <url>)
Notlar: URL'ye bağlı olarak HTTP isteği gönderilip gönderilemeyeceğini belirler. Güvenli bir bağlantı sağlamak için yalnızca güvenli (HTTPS) URL'lere izin verilir.
Örnek kod
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
Görünen ad: Tarayıcılardan piksel gönderir
Açıklama: Tarayıcıdan belirli bir URL'ye GET isteği gönderir.
Zorunlu kılma tarihi: sendPixelFromBrowser
Sorgu imzası: queryPermission('send_pixel_from_browser', <url>)
Notlar: URL'ye bağlı olarak, tarayıcıdan istek gönderilip gönderilemeyeceğini belirler.
Örnek kod
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
Görünen ad: Çerez ayarlar
Açıklama: Belirtilen ad ve parametrelere sahip bir çerez ayarlar.
Yapılandırma: Her biri isteğe bağlı olan, izin verilen çerez adlarını içeren bir tablo
Ad, alan, yol, secure
özelliği ve geçerlilik süresiyle ilgili kısıtlamalar.
Zorunlu kılma tarihi: setCookie
Sorgu imzası: queryPermission('set_cookies', <name>, <options>)
Notlar: Belirli bir "Set-Cookie" başlık, açıklama
yanıtı, çerez adına, alan adına, yola, secure
özelliğine ve
sona erecektir.
Örnek kod
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
Görünen ad: Özel özel anahtarlar kullanır
Açıklama: Şifreleme için JSON anahtar dosyasındaki özel anahtarları kullanır anlamına gelir.
Yapılandırma: İzin verilen anahtar kimliklerinin listesi. Kimlikler, sunucudaki SGTM_CREDENTIALS
ortam değişkeni tarafından başvurulan JSON anahtar dosyasındaki anahtarlarla eşleşmelidir.
Zorunlu kılma tarihi: hmacSha256
Sorgu imzası: queryPermission('use_custom_private_keys', <key id>)
Notlar: İzin verilen özel anahtarların listesini yönetir.
Örnek kod
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
Görünen ad: Google Uygulaması Varsayılan Kimlik Bilgilerini kullanır
Açıklama: Google'a çağrı yapmak için Google varsayılan kimlik bilgilerini kullanır API'ler.
Yapılandırma: İzin verilen Google OAuth 2.0 kapsamlarının listesi.
Zorunlu kılma tarihi: getGoogleAuth
Sorgu imzası: queryPermission('use_google_credentials', <scopes>)
Notlar: İzin verilen Google OAuth 2.0 kapsamlarının Google ile kullanımını kısıtlar. API'ler.
Örnek kod
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);
}