refresh date: 2026-09-25 robots: noindex
Opis
Używaj interfejsu API chrome.permissions, aby prosić o zadeklarowane uprawnienia opcjonalne w czasie działania, a nie w czasie instalacji. Dzięki temu użytkownicy będą rozumieć, do czego potrzebne są konkretne uprawnienia, i będą przyznawać tylko te, które są niezbędne.
Przegląd
Ostrzeżenia dotyczące uprawnień opisują możliwości, jakie daje interfejs API, ale niektóre z nich mogą nie być oczywiste. Interfejs Permissions API umożliwia deweloperom wyjaśnianie ostrzeżeń dotyczących uprawnień i stopniowe wprowadzanie nowych funkcji, co pozwala użytkownikom na bezpieczne zapoznanie się z rozszerzeniem. Dzięki temu użytkownicy mogą określić, jaki zakres dostępu chcą przyznać i które funkcje chcą włączyć.
Na przykład główną funkcjonalnością rozszerzenia z uprawnieniami opcjonalnymi jest zastępowanie strony nowej karty. Jedna z funkcji wyświetla cel użytkownika na dany dzień. Ta funkcja wymaga tylko uprawnienia storage, które nie powoduje wyświetlenia ostrzeżenia. Rozszerzenie ma dodatkową funkcję, którą użytkownicy mogą włączyć, klikając ten przycisk:

Wyświetlanie najczęściej odwiedzanych przez użytkownika witryn wymaga uprawnienia topSites, które wyświetla to ostrzeżenie.

Implementowanie uprawnień opcjonalnych
Krok 1. Zdecyduj, które uprawnienia są wymagane, a które opcjonalne
Rozszerzenie może deklarować zarówno wymagane, jak i opcjonalne uprawnienia. Ogólnie rzecz biorąc, wykonaj te czynności:
- Używaj wymaganych uprawnień, gdy są one potrzebne do podstawowego działania rozszerzenia.
- Używaj uprawnień opcjonalnych, gdy są one wymagane przez opcjonalne funkcje rozszerzenia.
Zalety uprawnień wymaganych:
- Mniej próśb: rozszerzenie może raz poprosić użytkownika o zaakceptowanie wszystkich uprawnień.
- Prostsze programowanie: wymagane uprawnienia są gwarantowane.
Zalety uprawnień opcjonalnych:
- Większe bezpieczeństwo: rozszerzenia działają z mniejszą liczbą uprawnień, ponieważ użytkownicy włączają tylko te uprawnienia, które są potrzebne.
- Lepsze informacje dla użytkowników: rozszerzenie może wyjaśnić, dlaczego potrzebuje określonego uprawnienia, gdy użytkownik włączy odpowiednią funkcję.
- Łatwiejsze uaktualnienia: gdy uaktualnisz rozszerzenie, Chrome nie wyłączy go u użytkowników, jeśli uaktualnienie dodaje uprawnienia opcjonalne, a nie wymagane.
Krok 2. Zadeklaruj uprawnienia opcjonalne w pliku manifestu
Zadeklaruj uprawnienia opcjonalne w pliku manifestu rozszerzenia za pomocą klucza optional_permissions, używając tego samego formatu co w polu permissions:
{
"name": "My extension",
...
"optional_permissions": ["tabs"],
"optional_host_permissions": ["https://www.google.com/"],
...
}
Jeśli chcesz wysyłać żądania do hostów, które wykrywasz tylko w czasie działania, dodaj "https://*/*" w polu optional_host_permissions rozszerzenia. Dzięki temu możesz określić dowolny element origin w Permissions.origins, o ile ma on pasujący schemat.
Uprawnienia, których nie można określić jako opcjonalne
Większość uprawnień rozszerzeń do Chrome można określić jako opcjonalne, z tymi wyjątkami:
| Uprawnienie | Opis |
|---|---|
"debugger" |
Interfejs API chrome.debugger służy jako alternatywny transport dla protokołu zdalnego debugowania Chrome. |
"declarativeNetRequest" |
Zapewnia rozszerzeniu dostęp do interfejsu API chrome.declarativeNetRequest. |
"devtools" |
Umożliwia rozszerzeniu rozbudowanie funkcji Narzędzi deweloperskich w Chrome. |
"experimental" |
Tylko wersje Canary i deweloperska. Zapewnia rozszerzeniu dostęp do interfejsów API chrome.experimental. |
"geolocation" |
Umożliwia rozszerzeniu korzystanie z interfejsu API geolokalizacji HTML5. |
"mdns" |
Zezwala rozszerzeniu na dostęp do interfejsu API chrome.mdns. |
"proxy" |
Zezwala rozszerzeniu na dostęp do interfejsu API chrome.proxy, aby zarządzać ustawieniami serwera proxy Chrome. |
"tts" |
Interfejs API chrome.tts odtwarza syntezę mowy (TTS). |
"ttsEngine" |
Interfejs API chrome.ttsEngine implementuje silnik zamiany tekstu na mowę (TTS) za pomocą rozszerzenia. |
"wallpaper" |
Tylko w systemie ChromeOS. Użyj interfejsu API chrome.wallpaper, aby zmienić tapetę w ChromeOS. |
Więcej informacji o dostępnych uprawnieniach i ostrzeżeniach znajdziesz w artykule Deklarowanie uprawnień i ostrzeganie użytkowników.
Krok 3. Poproś o uprawnienia opcjonalne
Poproś o uprawnienia w ramach gestu użytkownika za pomocą 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 wyświetli użytkownikowi prośbę o potwierdzenie, jeśli dodanie uprawnień spowoduje wyświetlenie innych komunikatów ostrzegawczych niż te, które użytkownik już widział i zaakceptował. Na przykład poprzedni kod może spowodować wyświetlenie takiego komunikatu:

Krok 4. Sprawdź bieżące uprawnienia rozszerzenia
Aby sprawdzić, czy rozszerzenie ma określone uprawnienie lub zestaw uprawnień, użyj 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.
}
});
Krok 5. Usuń uprawnienia
Jeśli nie potrzebujesz już uprawnień, usuń je. Po usunięciu uprawnienia wywołanie permissions.request() zwykle przywraca je bez pytania użytkownika.
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).
}
});
Typy
Permissions
Właściwości
-
źródła
string[] opcjonalne
Lista uprawnień hosta, w tym uprawnień określonych w kluczach
optional_permissionslubpermissionsw pliku manifestu oraz uprawnień powiązanych ze skryptami treści. -
uprawnienia
string[] opcjonalne
Lista nazwanych uprawnień (nie obejmuje hostów ani źródeł).
Metody
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
Sprawdza, czy rozszerzenie ma określone uprawnienia.
Parametry
-
uprawnienia
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(result: boolean) => void
-
wynik
wartość logiczna
Wartość „true”, jeśli rozszerzenie ma określone uprawnienia. Jeśli źródło jest określone zarówno jako uprawnienie opcjonalne, jak i wzorzec dopasowania skryptu treści, zwróci wartość
false, chyba że oba uprawnienia zostaną przyznane.
-
Zwroty
-
Promise<boolean>
Chrome 96 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
Pobiera bieżący zestaw uprawnień rozszerzenia.
Parametry
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(permissions: Permissions) => void
-
uprawnienia
Aktywne uprawnienia rozszerzenia. Pamiętaj, że właściwość
originsbędzie zawierać przyznane źródła spośród tych określonych w kluczachpermissionsioptional_permissionsw pliku manifestu oraz tych powiązanych ze skryptami treści.
-
Zwroty
-
Promise<Permissions>
Chrome 96 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): Promise<boolean>
Usuwa dostęp do określonych uprawnień. Jeśli podczas usuwania uprawnień wystąpią jakiekolwiek problemy, obietnica zostanie odrzucona.
Parametry
-
uprawnienia
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(removed: boolean) => void
-
usunięto
wartość logiczna
Wartość „prawda”, jeśli uprawnienia zostały usunięte.
-
Zwroty
-
Promise<boolean>
Chrome 96 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): Promise<boolean>
Wysyła prośbę o dostęp do określonych uprawnień, w razie potrzeby wyświetlając użytkownikowi odpowiedni komunikat. Te uprawnienia muszą być zdefiniowane w polu optional_permissions pliku manifestu lub muszą być uprawnieniami wymaganymi, które zostały wstrzymane przez użytkownika. Ścieżki we wzorcach źródeł będą ignorowane. Możesz poprosić o podzbiory opcjonalnych uprawnień dotyczących punktu początkowego. Jeśli na przykład w sekcji optional_permissions pliku manifestu podasz *://*\/*, możesz poprosić o http://example.com/. Jeśli wystąpią problemy z prośbą o uprawnienia, obietnica zostanie odrzucona.
Parametry
-
uprawnienia
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(granted: boolean) => void
-
przyznane
wartość logiczna
Prawda, jeśli użytkownik przyznał określone uprawnienia.
-
Zwroty
-
Promise<boolean>
Chrome 96 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
Wydarzenia
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
Uruchamiane, gdy rozszerzenie uzyskuje nowe uprawnienia.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(permissions: Permissions) => void
-
uprawnienia
-
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
Uruchamiane, gdy uprawnienia dostępu zostaną usunięte z rozszerzenia.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(permissions: Permissions) => void
-
uprawnienia
-