chrome.permissions

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.

Pojęcia i wykorzystanie

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:

Przycisk rozszerzenia, który włącza dodatkowe funkcje.
Przycisk rozszerzenia, który włącza dodatkowe funkcje.

Aby wyświetlić najpopularniejsze witryny użytkownika, musisz mieć uprawnienie topSites, które zawiera następujące ostrzeżenie.

Ostrzeżenie o akstencji w przypadku interfejsu TopSites API.
Ostrzeżenie dotyczące rozszerzenia interfejsu API topSites
.

Wdróż opcjonalne uprawnienia

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://*/*". Pozwala to określić dowolne źródło w polu "Permissions.origins", 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.
"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ń. 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:

Przykładowy komunikat z prośbą o potwierdzenie uprawnień.
Przykładowy komunikat z prośbą o potwierdzenie uprawnień.

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 lub permissions 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()

Obietnica .
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 w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

getAll()

Obietnica .
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 kluczach permissions i optional_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 w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

remove()

Obietnica .
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 w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

request()

Obietnica .
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 w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

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

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