يوضّح هذا المستند أذونات النماذج المخصّصة من جهة الخادم.
يتميّز كل إذن بما يلي:
- يتم التحقّق منها من خلال واجهات برمجة التطبيقات التي تتطلّب ذلك.
- تم اكتشافه تلقائيًا في JavaScript في وضع الحماية، استنادًا إلى واجهات برمجة التطبيقات المستخدمة. يحدث ذلك عند إجراء التعديلات في محرِّر النماذج المخصّصة (لتلقّي ملاحظات سريعة)، وعند تجميع الرموز البرمجية (للتحقّق من فرض الأذونات الصحيحة).
- قابل للتعديل في محرِّر النماذج المخصّصة لجعل الإذن أكثر تحديدًا.
- يمكن إجراء طلبات بحث عنها في JavaScript ضمن مساحة اختبار عبر واجهة برمجة التطبيقات
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>
هي سلسلة ويمكن أن تحتوي على القيم التالية:
- كتابة
<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 - لمنح إذن الوصول إلى واجهات برمجة التطبيقات للقراءة وطلبات البحث
- كتابة - منح إمكانية الدخول لكتابة واجهة برمجة التطبيقات
- read_ write - منح حق الوصول إلى واجهات برمجة التطبيقات للقراءة والكتابة والاستعلام
<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
الاسم المعروض: يقرأ قيم ملفات تعريف الارتباط
الوصف: يقرأ قيم ملفات تعريف الارتباط التي تتضمّن الاسم المحدّد.
الإعدادات: قائمة بأسماء ملفات تعريف الارتباط المسموح بقراءتها.
الجهة التي طلبت إجراء ذلك: getCookieValues
توقيع طلب البحث: queryPermission('get_cookies', <name>)
ملاحظات: تتحكّم هذه السياسة في إمكانية قراءة ملف تعريف الارتباط، استنادًا إلى اسمه.
مثال على الرمز
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
تسجيل
الاسم المعروض: سجلات وحدة التحكم
الوصف: السجلّات التي تخصّ وحدة تحكّم المطوّرين ووضع المعاينة في "إدارة العلامات من Google".
الإعدادات: خيار لتفعيل تسجيل الدخول في مرحلة الإنتاج. الإعداد التلقائي هو تفعيل تسجيل السجلّات في وضع تصحيح الأخطاء/المعاينة فقط. في حال رفض الإذن، سينفّذ 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
الاسم المعروض: يستخدم الرسائل
الوصف: إرسال الرسائل أو تلقّيها باستخدام addMessageListener
أو
sendMessage
من واجهات برمجة التطبيقات.
الضبط: خيار لتحديد نوع الرسالة وما إذا كان النموذج الاستماع أو الإرسال أو كليهما.
مطلوب من: addMessageListener
، sendMessage
توقيع طلب البحث: queryPermission('use_message', <usage>, <message type>)
ملاحظات: يمكن أن يكون الاستخدام بإحدى القيم التالية: 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
الاسم المعروض: لقراءة البيانات الوصفية للحدث
الوصف: قراءة البيانات الوصفية للحدث في طلبات معاودة الاتصال بالحدث
الإعداد: ما مِن إعدادات
مطلوب من: addEventCallback
توقيع طلب البحث: queryPermission('read_event_metadata')
ملاحظات: تتحكّم في ما إذا كان يمكن لنموذج مخصّص قراءة البيانات الوصفية للحدث في مع معاودة الاتصال.
مثال على الرمز
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
الاسم المعروض: لإعداد ملف تعريف ارتباط
الوصف: تضبط ملفّ تعريف ارتباط بالاسم والمَعلمات المحدَّدة.
الإعدادات: جدول لأسماء ملفات تعريف الارتباط المسموح بها، ويتضمّن كل منها جدولاً اختياريًا.
القيود المفروضة على الاسم والنطاق والمسار والسمة secure
وتاريخ انتهاء الصلاحية.
مطلوب من: setCookie
توقيع طلب البحث: queryPermission('set_cookies', <name>, <options>)
ملاحظات: تحدّد ما إذا كان يمكن إضافة عنوان "Set-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 للتشفير العمليات التجارية.
الإعدادات: قائمة بأرقام تعريف المفاتيح المسموح بها. يجب أن تتطابق أرقام التعريف مع المفاتيح في
ملف مفتاح 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
الاسم المعروض: يستخدم بيانات الاعتماد التلقائية لتطبيق Google.
الوصف: يستخدم بيانات اعتماد Google التلقائية لإجراء مكالمات إلى Google. واجهات برمجة التطبيقات.
الإعدادات: قائمة بنطاقات Google OAuth 2.0 المسموح بها.
مطلوب من: getGoogleAuth
توقيع طلب البحث: queryPermission('use_google_credentials', <scopes>)
ملاحظات: تفرض قيودًا على نطاقات Google OAuth 2.0 المسموح بها للاستخدام مع Google واجهات برمجة التطبيقات.
مثال على الرمز
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);
}