refresh date: 2026-09-25 robots: noindex
الوصف
استخدِم واجهة برمجة التطبيقات chrome.permissions لطلب الأذونات الاختيارية المعلَن عنها في وقت التشغيل بدلاً من وقت التثبيت، حتى يفهم المستخدمون سبب الحاجة إلى الأذونات ولا يمنحوا إلا الأذونات الضرورية.
نظرة عامة
تتوفّر تحذيرات الأذونات لوصف الإمكانات التي تمنحها واجهة برمجة التطبيقات، ولكن قد لا تكون بعض هذه التحذيرات واضحة. تسمح واجهة Permissions API للمطوّرين بتوضيح تحذيرات الأذونات وتقديم ميزات جديدة تدريجيًا، ما يتيح للمستخدمين التعرّف على الإضافة بدون أي مخاطر. بهذه الطريقة، يمكن للمستخدمين تحديد مقدار الوصول الذي يريدون منحه والميزات التي يريدون تفعيلها.
على سبيل المثال، تتمثّل الوظيفة الأساسية لإضافة الأذونات الاختيارية في إلغاء صفحة علامة التبويب الجديدة. إحدى الميزات هي عرض هدف المستخدم لهذا اليوم. تتطلّب هذه الميزة إذن مساحة التخزين فقط، والذي لا يتضمّن تحذيرًا. يتضمّن الامتداد ميزة إضافية يمكن للمستخدمين تفعيلها من خلال النقر على الزر التالي:

يتطلّب عرض أهم المواقع الإلكترونية للمستخدم إذن topSites الذي يتضمّن التحذير التالي.

تنفيذ الأذونات الاختيارية
الخطوة 1: تحديد الأذونات المطلوبة والأذونات الاختيارية
يمكن للإضافة تحديد الأذونات المطلوبة والاختيارية. بشكل عام، عليك إجراء ما يلي:
- استخدِم الأذونات المطلوبة عندما تكون ضرورية للوظائف الأساسية للإضافة.
- استخدِم الأذونات الاختيارية عندما تكون مطلوبة للميزات الاختيارية في الإضافة.
مزايا الأذونات المطلوبة:
- عدد أقل من الطلبات: يمكن أن يطلب أحد الإضافات من المستخدم مرة واحدة قبول جميع الأذونات.
- تطوير أبسط: نضمن توفّر الأذونات المطلوبة.
مزايا الأذونات الاختيارية:
- أمان أفضل: تعمل الإضافات بأذونات أقل لأنّ المستخدمين يفعّلون الأذونات المطلوبة فقط.
- معلومات أفضل للمستخدمين: يمكن لإحدى الإضافات أن توضّح سبب حاجتها إلى إذن معيّن عندما يفعّل المستخدم الميزة ذات الصلة.
- ترقيات أسهل: عند ترقية الإضافة، لن يوقف Chrome الإضافة للمستخدمين إذا أضافت الترقية أذونات اختيارية بدلاً من الأذونات المطلوبة.
الخطوة 2: تضمين الأذونات الاختيارية في ملف البيان
يمكنك تضمين الأذونات الاختيارية في بيان الإضافة باستخدام المفتاح optional_permissions،
وبالتنسيق نفسه المستخدَم في الحقل permissions:
{
"name": "My extension",
...
"optional_permissions": ["tabs"],
"optional_host_permissions": ["https://www.google.com/"],
...
}
إذا أردت طلب مضيفين لا يتم اكتشافهم إلا في وقت التشغيل، أدرِج "https://*/*" في حقل optional_host_permissions الخاص بالإضافة. يتيح لك ذلك تحديد أي مصدر في Permissions.origins طالما أنّه يتضمّن مخططًا مطابقًا.
الأذونات التي لا يمكن تحديدها على أنّها اختيارية
يمكن تحديد معظم أذونات إضافات Chrome على أنّها اختيارية، باستثناء ما يلي.
| الإذن | الوصف |
|---|---|
"debugger" |
تعمل واجهة برمجة التطبيقات chrome.debugger كبديل لنقل بروتوكول تصحيح الأخطاء عن بُعد في Chrome. |
"declarativeNetRequest" |
يمنح الإضافة إذن الوصول إلى واجهة برمجة التطبيقات chrome.declarativeNetRequest. |
"devtools" |
تسمح هذه السمة للإضافة بتوسيع وظائف أدوات مطوّري البرامج في Chrome. |
"experimental" |
إصدار Canary وقناة مطوري البرامج فقط. يمنح الإضافة إذن الوصول إلى واجهات برمجة التطبيقات chrome.experimental. |
"geolocation" |
تسمح هذه السمة للإضافة باستخدام واجهة برمجة التطبيقات لتحديد الموقع الجغرافي في HTML5. |
"mdns" |
يمنح الإضافة إذن الوصول إلى واجهة برمجة التطبيقات chrome.mdns. |
"proxy" |
يمنح الإضافة إذن الوصول إلى واجهة برمجة التطبيقات chrome.proxy لإدارة إعدادات الخادم الوكيل في Chrome. |
"tts" |
تتيح واجهة برمجة التطبيقات chrome.tts تشغيل النص المحوّل إلى كلام (TTS). |
"ttsEngine" |
تنفِّذ واجهة برمجة التطبيقات chrome.ttsEngine محركًا لتحويل النص إلى كلام (TTS) باستخدام إضافة. |
"wallpaper" |
على أجهزة ChromeOS فقط استخدِم واجهة برمجة التطبيقات chrome.wallpaper لتغيير خلفية ChromeOS. |
يمكنك الاطّلاع على الإفصاح عن الأذونات وتحذير المستخدمين للحصول على مزيد من المعلومات حول الأذونات المتاحة والتحذيرات المتعلقة بها.
الخطوة 3: طلب أذونات اختيارية
اطلب الأذونات من داخل إجراء تفاعلي من المستخدم باستخدام permissions.request():
document.querySelector('#my-button').addEventListener('click', (event) => {
// Permissions must be requested from inside a user gesture, like a button's
// click handler.
chrome.permissions.request({
permissions: ['tabs'],
origins: ['https://www.google.com/']
}, (granted) => {
// The callback argument will be true if the user granted the permissions.
if (granted) {
doSomething();
} else {
doSomethingElse();
}
});
});
يطلب Chrome من المستخدم الموافقة على الأذونات إذا كان منحها سيؤدي إلى ظهور رسائل تحذير مختلفة عن تلك التي سبق أن وافق عليها المستخدم. على سبيل المثال، قد يؤدي الرمز السابق إلى ظهور طلب على النحو التالي:

الخطوة 4: التحقّق من الأذونات الحالية للإضافة
للتحقّق مما إذا كانت الإضافة تتضمّن إذنًا أو مجموعة أذونات معيّنة، استخدِم
permission.contains():
chrome.permissions.contains({
permissions: ['tabs'],
origins: ['https://www.google.com/']
}, (result) => {
if (result) {
// The extension has the permissions.
} else {
// The extension doesn't have the permissions.
}
});
الخطوة 5: إزالة الأذونات
عليك إزالة الأذونات عندما لا تعود بحاجة إليها. بعد إزالة أحد الأذونات، يؤدي استدعاء permissions.request() عادةً إلى إعادة إضافة الإذن بدون مطالبة المستخدم بذلك.
chrome.permissions.remove({
permissions: ['tabs'],
origins: ['https://www.google.com/']
}, (removed) => {
if (removed) {
// The permissions have been removed.
} else {
// The permissions have not been removed (e.g., you tried to remove
// required permissions).
}
});
الأنواع
Permissions
الخصائص
-
المصادر
string[] اختياري
قائمة بأذونات المضيف، بما في ذلك الأذونات المحدّدة في المفتاحَين
optional_permissionsأوpermissionsفي ملف البيان، والأذونات المرتبطة ببرامج النصوص الخاصة بالمحتوى -
أذونات
string[] اختياري
قائمة بالأذونات المسماة (لا تشمل المضيفين أو المصادر)
الطُرق
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
يتحقّق مما إذا كانت الإضافة تتضمّن الأذونات المحدّدة.
المعلمات
-
أذونات
-
callback
الدالة اختيارية
تظهر المَعلمة
callbackعلى النحو التالي:(result: boolean) => void
-
نتيجة
قيمة منطقية
تعرض القيمة "صحيح" إذا كانت الإضافة تتضمّن الأذونات المحدّدة. إذا تم تحديد مصدر على أنّه إذن اختياري ونمط مطابق لبرنامج نصي للمحتوى، سيؤدي ذلك إلى عرض
falseما لم يتم منح كلا الإذنين.
-
المرتجعات
-
Promise<boolean>
Chrome 96 والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام عمليات معاودة الاتصال.
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
تعرض هذه السمة مجموعة الأذونات الحالية للإضافة.
المعلمات
-
callback
الدالة اختيارية
تظهر المَعلمة
callbackعلى النحو التالي:(permissions: Permissions) => void
-
أذونات
أذونات الإضافة النشطة يُرجى العِلم أنّ السمة
originsستتضمّن المصادر الممنوحة من تلك المحدّدة في المفتاحَينpermissionsوoptional_permissionsفي ملف البيان وتلك المرتبطة ببرامج نصية للمحتوى.
-
المرتجعات
-
Promise<Permissions>
Chrome 96 والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام عمليات معاودة الاتصال.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): Promise<boolean>
يزيل هذا الأمر إذن الوصول إلى الأذونات المحدّدة. إذا واجهت أي مشاكل في إزالة الأذونات، سيتم رفض الوعد.
المعلمات
-
أذونات
-
callback
الدالة اختيارية
تظهر المَعلمة
callbackعلى النحو التالي:(removed: boolean) => void
-
تمت الإزالة
قيمة منطقية
تعرض القيمة "صحيح" إذا تمت إزالة الأذونات.
-
المرتجعات
-
Promise<boolean>
Chrome 96 والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام عمليات معاودة الاتصال.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): Promise<boolean>
يطلب الوصول إلى الأذونات المحدّدة، ويعرض رسالة للمستخدم إذا لزم الأمر. يجب تحديد هذه الأذونات في الحقل optional_permissions من ملف البيان أو أن تكون أذونات مطلوبة حجبها المستخدم. سيتم تجاهل المسارات في أنماط المصدر. يمكنك طلب مجموعات فرعية من أذونات المصدر الاختيارية. على سبيل المثال، إذا حدّدت *://*\/* في القسم optional_permissions من ملف البيان، يمكنك طلب http://example.com/. إذا واجهت أي مشاكل في طلب الأذونات، سيتم رفض الوعد.
المعلمات
-
أذونات
-
callback
الدالة اختيارية
تظهر المَعلمة
callbackعلى النحو التالي:(granted: boolean) => void
-
تم منح الموافقة
قيمة منطقية
تعرض هذه السمة القيمة "صحيح" إذا منح المستخدم الأذونات المحدّدة.
-
المرتجعات
-
Promise<boolean>
Chrome 96 والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام عمليات معاودة الاتصال.
الفعاليات
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
يتم تنشيط هذا الحدث عندما تحصل الإضافة على أذونات جديدة.
المعلمات
-
callback
دالة
تظهر المَعلمة
callbackعلى النحو التالي:(permissions: Permissions) => void
-
أذونات
-
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
يتم تنشيط هذا الحدث عند إزالة إذن الوصول إلى الأذونات من الإضافة.
المعلمات
-
callback
دالة
تظهر المَعلمة
callbackعلى النحو التالي:(permissions: Permissions) => void
-
أذونات
-