Разрешения
Позволяет расширениям запрашивать дополнительные разрешения во время выполнения после их установки.
Расширениям необходимы разрешения для доступа к более мощным API WebExtension. Они могут запросить разрешения во время установки, включив необходимые разрешения в ключе permissions файла manifest.json. Основные преимущества запроса разрешений во время установки:
- Пользователь будет спрашиваться только один раз, что менее дискомфортно и упрощает принятие решения.
- Расширение может полагаться на доступ к необходимым API, так как если оно уже запущено, разрешения были предоставлены.
В большинстве основных браузеров пользователи могут увидеть, запрашивают ли установленные расширения расширенные разрешения через менеджер расширений браузера.
С помощью API разрешений расширение может запросить дополнительные разрешения во время выполнения. Эти разрешения должны быть перечислены в ключе optional_permissions файла manifest.json. Обратите внимание, что некоторые разрешения не разрешены в optional_permissions. Основные преимущества этого:
- Расширение может работать с меньшим набором разрешений, за исключением случаев, когда они действительно нужны.
- Расширение может обрабатывать отказ в предоставлении разрешений более изящно, вместо того, чтобы предлагать пользователю глобальный выбор «все или ничего» во время установки. Вы все еще можете получить много от расширения карты, не предоставляя ему доступ к вашему местоположению, например.
- Расширение может потребовать разрешений на хост, но не знать во время установки, какие разрешения на хост ему нужны. Например, список хостов может быть настройкой пользователя. В этом случае запрос более конкретного диапазона хостов во время выполнения может быть альтернативой запросу «<all_urls>» во время установки.
Для использования API разрешений определите, какие разрешения ваше расширение может запросить во время выполнения, и перечислите их в optional_permissions. После этого вы можете запросить любые разрешения, которые были включены в optional_permissions. Запросы могут выполняться только в обработчике действия пользователя (например, обработчике щелчка).
Начиная с Firefox 84, пользователи смогут управлять дополнительными разрешениями установленных расширений из менеджера дополнений. Расширения, использующие дополнительные разрешения, должны прослушивать события API browser.permissions.onAdded и browser.permissions.onRemoved для того, чтобы знать, когда пользователь предоставляет или отменяет эти разрешения.
Советы по проектированию запросов на разрешения во время выполнения, чтобы максимально увеличить вероятность их предоставления пользователем, см. в Запрос разрешений во время выполнения.
Типы
permissions.Permissions-
Представляет набор разрешений.
Методы
permissions.contains()-
Определяет заданный набор разрешений расширения.
permissions.getAll()-
Получить все разрешения, имеющиеся у этого расширения в настоящее время.
permissions.remove()-
Отказаться от набора разрешений.
permissions.request()-
Запросить набор разрешений.
Обработчики событий
permissions.onAdded-
Вызывается при предоставлении нового разрешения.
permissions.onRemoved-
Вызывается при удалении разрешения.
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | |
Permissions |
Да | 79 | 55 | ? | Да | 14 | ? | ? | 79 | ? | 15 | ? |
contains |
Да | 79 | 55 | ? | Да | 14 | ? | ? | 79 | ? | 15 | ? |
getAll |
Да | 79 | 55 | ? | Да | 14 | ? | ? | 79 | ? | 15 | ? |
onAdded |
Да | 79 | 77 | ? | Да | 14 | ? | ? | 79 | ? | 15 | ? |
onRemoved |
Да | 79 | 77 | ? | Да | 14 | ? | ? | 79 | ? | 15 | ? |
remove |
Да | 79 | 55 | ? | Да | 14Удаление<all_urls> или *://*/* источников удалит ранее предоставленное разрешение на запрос конкретных шаблонов источников и прекратит автоматическое запрошение пользователя о доступе к любому посещенному веб-сайту через всплывающее окно доступа расширения в панели инструментов. |
? | ? | 79 | ? | 15Удаление<all_urls> или *://*/* источников удалит ранее предоставленное разрешение на запрос конкретных шаблонов источников и прекратит автоматическое запрошение пользователя о доступе к любому посещенному веб-сайту через всплывающее окно доступа расширения в панели инструментов. |
? |
request |
Да | 79 | 55["Невозможно запросить разрешения из документа боковой панели (ошибка 1493396).", "До версии 75 разрешения не могут быть запрошены из панелей всплывающих окон (см. ошибка 1432083).", "До версии 61 разрешения не могут быть запрошены из страниц настроек, встроенных вabout:addons (см. ошибка 1382953)."] |
? | Да | 14["Запрос<all_urls> или *://*/* источников предоставит разрешение на запрос конкретных шаблонов источников и автоматически запросит пользователя о доступе к любому посещенному веб-сайту через всплывающее окно доступа расширения в панели инструментов.", "Пользователь будет снова запрошен о разрешениях, которые были ранее предоставлены, а затем удалены.", "Поддерживаемые разрешения будут предоставлены без запроса пользователя. Только конкретные шаблоны источников будут запрошены у пользователя."] |
? | ? | 102 | ? | 15["Запрос<all_urls> или *://*/* источников предоставит разрешение на запрос конкретных шаблонов источников и автоматически запросит пользователя о доступе к любому посещенному веб-сайту через баннер расширения.", "Пользователь будет снова запрошен о разрешениях, которые были ранее предоставлены, а затем удалены.", "Поддерживаемые разрешения будут предоставлены без запроса пользователя. Только конкретные шаблоны источников будут запрошены у пользователя."] |
? |
См. также
-
manifest.jsonpermissionsсвойство -
manifest.jsonoptional_permissionsсвойство
Примеры расширений
Примечание: Этот API основан на API chrome.permissions Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/permissions