يوضّح هذا المستند الأذونات الخاصة بالنماذج المخصّصة من جهة الخادم.
كل إذن هو:
- يتم التحقّق منها من خلال واجهات برمجة التطبيقات التي تتطلّب ذلك.
- يتم رصدها تلقائيًا في 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>
هي سلسلة ويمكن أن تتضمّن القيم التالية:
- 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 - لمنح إذن الوصول إلى واجهات برمجة التطبيقات للقراءة وطلبات البحث
- write - لمنح إذن الوصول إلى واجهة برمجة التطبيقات لتعديل البيانات
- 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')
ملاحظات: تتحكّم هذه السمة في ما إذا كان بإمكان نموذج مخصّص قراءة البيانات الوصفية للحدث في 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
الاسم المعروض: لضبط ملف تعريف ارتباط
الوصف: يُستخدَم لضبط ملفّ تعريف ارتباط بالاسم والمَعلمات المحدّدَين.
الإعداد: جدول بأسماء ملفات تعريف الارتباط المسموح بها، ولكل منها قيود optional
على الاسم والنطاق والمسار وسمة 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 APIs.
الإعداد: قائمة بنطاقات Google OAuth 2.0 المسموح بها
الجهة التي طلبت إجراء ذلك: getGoogleAuth
توقيع طلب البحث: queryPermission('use_google_credentials', <scopes>)
ملاحظات: تقييد نطاقات Google OAuth 2.0 المسموح بها للاستخدام مع 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);
}