Opis
Używaj interfejsu chrome.permissions
API, aby wysyłać żądania zadeklarowanych opcjonalnych uprawnień w czasie działania, a nie podczas instalacji. Dzięki temu użytkownicy będą rozumieć, dlaczego uprawnienia są potrzebne, i przyznać tylko te, które są niezbędne.
Omówienie
Ostrzeżenia o uprawnieniach opisują możliwości zapewniane przez interfejs API, ale niektóre z nich mogą nie być oczywiste. Interfejs Permissions API pozwala deweloperom wyjaśniać ostrzeżenia o uprawnieniach i stopniowo wprowadzać nowe funkcje, dzięki czemu użytkownicy mogą bez ryzyka zapoznać się z rozszerzeniem. W ten sposób użytkownicy mogą określić poziom dostępu, który chcą przyznać, i funkcje, które chcą włączyć.
Na przykład główna funkcjonalność rozszerzenia uprawnień opcjonalnych zastępuje stronę nowej karty. Jedna z nich to wyświetlanie celu użytkownika na dany dzień. Ta funkcja wymaga tylko uprawnienia do miejsca na dane, które nie wyświetla ostrzeżenia. Rozszerzenie ma dodatkową funkcję, którą użytkownicy mogą włączyć, klikając następujący przycisk:
Aby wyświetlić najpopularniejsze witryny użytkownika, musisz mieć uprawnienie topSites, które zawiera następujące ostrzeżenie.
Wdrażanie opcjonalnych uprawnień
Krok 1. Zdecyduj, które uprawnienia są wymagane, a które opcjonalne
Rozszerzenie może zadeklarować uprawnienia zarówno wymagane, jak i opcjonalne. Ogólne zalecenia:
- Korzystaj z wymaganych uprawnień, gdy są one potrzebne do działania podstawowych funkcji rozszerzenia.
- Używaj uprawnień opcjonalnych, gdy są potrzebne do korzystania z opcjonalnych funkcji w rozszerzeniu.
Zalety wymaganych uprawnień:
- Mniej promptów: rozszerzenie może raz poprosić użytkownika o zaakceptowanie wszystkich uprawnień.
- Prostsze programowanie: wymagane uprawnienia będą gwarantowane.
Zalety opcjonalnych uprawnień:
- Większe bezpieczeństwo: rozszerzenia działają z mniejszymi uprawnieniami, bo użytkownicy tylko włączają uprawnienia które są niezbędne.
- Bardziej przydatne informacje dla użytkowników: rozszerzenie może wyjaśnić, dlaczego potrzebuje określonych uprawnień. gdy użytkownik włączy daną funkcję.
- Łatwiejsze uaktualnianie: gdy uaktualnisz rozszerzenie, Chrome nie wyłączy go dla użytkowników, jeśli uaktualnienie dodaje uprawnienia opcjonalne, a nie wymagane.
Krok 2. Zadeklaruj opcjonalne uprawnienia w pliku manifestu
Zadeklaruj opcjonalne uprawnienia 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 o hosty wykrywane tylko w czasie działania, w polu optional_host_permissions
rozszerzenia wpisz "https://*/*"
. Dzięki temu w polu Permissions.origins możesz określić dowolne źródło, o ile ma ono dopasowanie
oszustw.
Uprawnienia, których nie można określić jako opcjonalne
Większość uprawnień rozszerzeń do Chrome można określić jako opcjonalne z następującymi wyjątkami.
Uprawnienie | Opis |
---|---|
"debugger" |
Interfejs API chrome.debugger służy alternatywny transport dla zdalnego debugowania przeglądarki Chrome . |
"declarativeNetRequest" |
Przyznaje rozszerzeniu dostęp do chrome.declarativeNetRequest. |
"devtools" |
Umożliwia rozszerzeniu rozwijanie Narzędzi deweloperskich w Chrome funkcji. |
"experimental" |
Wersja Canary i wersja deweloperska (tylko w języku angielskim). Przyznaje rozszerzeniu dostęp do interfejsów API chrome.experimental. |
"geolocation" |
Zezwala rozszerzeniu na używanie interfejsu API geolokalizacji HTML5. |
"mdns" |
Przyznaje rozszerzeniu dostęp do funkcji interfejsu API chrome.mdns. |
"proxy" |
Przyznaje rozszerzeniu dostęp do interfejsu API chrome.proxy w celu zarządzania serwerem proxy Chrome. ustawieniach. |
"tts" |
Interfejs API chrome.tts odtwarza syntezator zamiana tekstu na mowę (TTS). |
"ttsEngine" |
Interfejs API chrome.ttsEngine implementuje mechanizm za pomocą rozszerzenia. |
"wallpaper" |
Dotyczy tylko ChromeOS. Użycie interfejsu API chrome.wallpaper do zmiany ustawień ChromeOS. tapeta. |
Więcej informacji o dostępnych uprawnieniach znajdziesz w artykule Deklarowanie uprawnień i ostrzeganie użytkowników. ich ostrzeżenia.
Krok 3. Poproś o opcjonalne uprawnienia
Poproś o przyznanie uprawnień gestem 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 pyta użytkownika, czy dodanie uprawnień powoduje wyświetlanie innych komunikatów ostrzegawczych niż który użytkownik już widział i zaakceptował. Poprzedni kod może na przykład spowodować wyświetlenie komunikatu to:
Krok 4. Sprawdź bieżące uprawnienia rozszerzenia
Aby sprawdzić, czy rozszerzenie ma określone uprawnienia 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
Usuń uprawnienia, gdy już ich nie potrzebujesz. Po usunięciu uprawnienia
Wywoływanie permissions.request()
zwykle dodaje te uprawnienia 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
-
punkty początkowe
string[] opcjonalnie
Lista uprawnień hosta, w tym uprawnień określonych w kluczach
optional_permissions
lubpermissions
w pliku manifestu oraz uprawnień powiązanych ze skryptami treści Content Script. -
uprawnienia
string[] opcjonalnie
Lista nazwanych uprawnień (nie obejmuje hostów ani źródeł).
Metody
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
)
Sprawdza, czy rozszerzenie ma określone uprawnienia.
Parametry
-
uprawnienia
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(result: boolean) => void
-
wynik
wartość logiczna
Prawda, 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 zostaną przyznane oba te uprawnienia.
-
Zwroty
-
Promise<boolean>
Chrome w wersji 96 lub nowszej, .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
getAll()
chrome.permissions.getAll(
callback?: function,
)
Pobiera bieżący zestaw uprawnień rozszerzenia.
Parametry
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(permissions: Permissions) => void
-
uprawnienia
Aktywne uprawnienia rozszerzenia. Pamiętaj, że właściwość
origins
będzie zawierać przyznane źródła spośród tych określonych w kluczachpermissions
ioptional_permissions
w pliku manifestu oraz te powiązane ze skryptami treści.
-
Zwroty
-
Promise<Permissions>
Chrome w wersji 96 lub nowszej, .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
)
Odbiera dostęp do określonych uprawnień. Jeśli wystąpią problemy z usunięciem uprawnień, ustawimy runtime.lastError
.
Parametry
-
uprawnienia
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(removed: boolean) => void
-
usunięto
wartość logiczna
Prawda, jeśli uprawnienia zostały usunięte.
-
Zwroty
-
Promise<boolean>
Chrome w wersji 96 lub nowszej, .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
)
Pyta o przyznanie określonych uprawnień i w razie potrzeby wyświetla użytkownikowi prośbę. Te uprawnienia muszą być określone w polu optional_permissions
pliku manifestu lub muszą być wymagane, które użytkownik zablokował. Ścieżki we wzorcach punktu początkowego będą ignorowane. Możesz prosić o podzbiory opcjonalnych uprawnień dotyczących źródła. Jeśli na przykład w sekcji optional_permissions
pliku manifestu określisz *://*\/*
, możesz zażądać http://example.com/
. Jeśli wystąpią problemy z prośbą o uprawnienia, ustawiona zostanie runtime.lastError
.
Parametry
-
uprawnienia
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(granted: boolean) => void
-
przyznane
wartość logiczna
Prawda, jeśli użytkownik przyznał określone uprawnienia.
-
Zwroty
-
Promise<boolean>
Chrome w wersji 96 lub nowszej, .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
Wydarzenia
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
Uruchamiane, gdy rozszerzenie uzyska nowe uprawnienia.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(permissions: Permissions) => void
-
uprawnienia
-
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
Uruchamiane, gdy dostęp do uprawnień zostanie usunięty z rozszerzenia.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(permissions: Permissions) => void
-
uprawnienia
-