chrome.permissions

Beschrijving

Gebruik de chrome.permissions API om tijdens de uitvoering optionele machtigingen aan te vragen in plaats van tijdens de installatie. Zo begrijpen gebruikers waarom de machtigingen nodig zijn en verlenen ze alleen de noodzakelijke machtigingen.

Concepten en gebruik

Toestemmingswaarschuwingen beschrijven de mogelijkheden die een API biedt, maar sommige van deze waarschuwingen zijn mogelijk niet direct duidelijk. De Permissions API stelt ontwikkelaars in staat om toestemmingswaarschuwingen toe te lichten en nieuwe functies geleidelijk te introduceren, waardoor gebruikers op een risicovrije manier met de extensie kennis kunnen maken. Op deze manier kunnen gebruikers zelf aangeven hoeveel toegang ze willen verlenen en welke functies ze willen inschakelen.

De kernfunctionaliteit van de optionele machtigingsuitbreiding is bijvoorbeeld het overschrijven van de pagina voor nieuwe tabbladen. Een van de functies is het weergeven van het doel van de gebruiker voor die dag. Deze functie vereist alleen de machtiging voor opslag , waarvoor geen waarschuwing wordt gegeven. De uitbreiding heeft een extra functie die gebruikers kunnen inschakelen door op de volgende knop te klikken:

Een uitbreidingsknop waarmee extra functies kunnen worden ingeschakeld.
Een uitbreidingsknop waarmee extra functies kunnen worden ingeschakeld.

Om de meest bezochte sites van de gebruiker weer te geven, is de machtiging `topSites` vereist. Deze machtiging bevat de volgende waarschuwing.

Axtension-waarschuwing voor de topSites API.
Een waarschuwing voor een extensie voor topSites API

Implementeer optionele machtigingen

Stap 1: Bepaal welke machtigingen vereist zijn en welke optioneel zijn.

Een extensie kan zowel verplichte als optionele machtigingen declareren. Over het algemeen geldt het volgende:

  • Gebruik de vereiste machtigingen alleen wanneer deze nodig zijn voor de basisfunctionaliteit van uw extensie.
  • Gebruik optionele machtigingen alleen wanneer deze nodig zijn voor optionele functies in uw extensie.

Voordelen van vereiste vergunningen:

  • Minder meldingen: Een extensie kan de gebruiker slechts één keer vragen om alle machtigingen te accepteren.
  • Eenvoudigere ontwikkeling: De benodigde machtigingen zijn gegarandeerd aanwezig.

Voordelen van optionele machtigingen:

  • Betere beveiliging: Extensies werken met minder machtigingen, omdat gebruikers alleen de benodigde machtigingen inschakelen.
  • Betere informatie voor gebruikers: Een extensie kan uitleggen waarom een ​​bepaalde toestemming nodig is wanneer de gebruiker de betreffende functie inschakelt.
  • Eenvoudigere upgrades: Wanneer u uw extensie bijwerkt, zal Chrome deze niet uitschakelen voor uw gebruikers als de upgrade optionele in plaats van verplichte machtigingen toevoegt.

Stap 2: Declareer optionele machtigingen in het manifest

Declareer optionele machtigingen in uw extensiemanifest met de sleutel optional_permissions , in hetzelfde formaat als het veld permissions :

{
  "name": "My extension",
  ...
  "optional_permissions": ["tabs"],
  "optional_host_permissions": ["https://www.google.com/"],
  ...
}

Als u hosts wilt opvragen die u pas tijdens de uitvoering ontdekt, voeg dan "https://*/*" toe aan het veld optional_host_permissions van uw extensie. Hiermee kunt u elke oorsprong in "Permissions.origins" specificeren, zolang deze maar een overeenkomend schema heeft.

Machtigingen die niet als optioneel kunnen worden gespecificeerd.

De meeste machtigingen voor Chrome-extensies kunnen als optioneel worden ingesteld, met de volgende uitzonderingen.

Toestemming Beschrijving
"debugger" De chrome.debugger API dient als alternatief transportmechanisme voor het externe debugprotocol van Chrome.
"declarativeNetRequest" Geeft de extensie toegang tot de chrome.declarativeNetRequest API.
"devtools" Hiermee kan de functionaliteit van Chrome DevTools worden uitgebreid.
"geolocation" Hiermee kan de extensie de HTML5 -geolocatie- API gebruiken.
"mdns" Geeft de extensie toegang tot de chrome.mdns API.
"proxy" Geeft de extensie toegang tot de chrome.proxy API om de proxy-instellingen van Chrome te beheren.
"tts" De chrome.tts API speelt gesynthetiseerde tekst-naar-spraak (TTS) af.
"ttsEngine" De chrome.ttsEngine API implementeert een tekst-naar-spraak (TTS) engine met behulp van een extensie.
"wallpaper" Alleen voor ChromeOS . Gebruik de chrome.wallpaper API om de ChromeOS-achtergrond te wijzigen.

Raadpleeg 'Machtigingen verklaren' voor meer informatie over beschikbare machtigingen en de bijbehorende waarschuwingen.

Stap 3: Vraag optionele machtigingen aan

Vraag de benodigde machtigingen aan vanuit een gebruikersactie met behulp van 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 vraagt ​​de gebruiker om bevestiging als het toevoegen van de machtigingen andere waarschuwingsberichten oplevert dan de gebruiker al heeft gezien en geaccepteerd. De bovenstaande code zou bijvoorbeeld een melding als deze kunnen opleveren:

Een voorbeeld van een prompt voor toestemmingsbevestiging.
Een voorbeeld van een prompt voor toestemmingsbevestiging.

Stap 4: Controleer de huidige machtigingen van de extensie.

Om te controleren of uw extensie een specifieke machtiging of een set machtigingen heeft, gebruikt u 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.
  }
});

Stap 5: Verwijder de machtigingen

Je moet machtigingen verwijderen wanneer je ze niet meer nodig hebt. Nadat een machtiging is verwijderd, voegt de functie permissions.request() de machtiging meestal automatisch weer toe, zonder dat de gebruiker hierom wordt gevraagd.

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).
  }
});

Soorten

Permissions

Eigenschappen

  • oorsprongen

    string[] optioneel

    De lijst met hostmachtigingen, inclusief die welke zijn gespecificeerd in de sleutels optional_permissions of permissions in het manifest, en die welke zijn gekoppeld aan inhoudsscripts .

  • toestemmingen

    string[] optioneel

    Lijst met benoemde machtigingen (exclusief hosts of origins).

Methoden

addHostAccessRequest()

Chrome 133+ MV3+
chrome.permissions.addHostAccessRequest(
  request: object,
)
: Promise<void>

Voegt een verzoek om hosttoegang toe. Het verzoek wordt alleen aan de gebruiker doorgegeven als de extensie toegang kan krijgen tot de host in het verzoek. Het verzoek wordt gereset bij navigatie tussen verschillende domeinen. Indien geaccepteerd, wordt permanente toegang verleend tot het hoofddomein van de site.

Parameters

  • verzoek

    voorwerp

    • documentId

      string optioneel

      De ID van een document waar verzoeken om hosttoegang kunnen worden weergegeven. Dit moet het document op het hoogste niveau binnen een tabblad zijn. Indien opgegeven, wordt het verzoek weergegeven op het tabblad van het betreffende document en verwijderd wanneer het document naar een nieuwe bron navigeert. Het toevoegen van een nieuw verzoek overschrijft elk bestaand verzoek voor tabId . Deze ID of tabId moet worden opgegeven.

    • patroon

      string optioneel

      Het URL-patroon waar hosttoegangsverzoeken kunnen worden weergegeven. Indien opgegeven, worden hosttoegangsverzoeken alleen weergegeven op URL's die aan dit patroon voldoen.

    • tabId

      nummer optioneel

      De ID van het tabblad waarop verzoeken om hosttoegang kunnen worden weergegeven. Indien opgegeven, wordt het verzoek op het opgegeven tabblad weergegeven en verwijderd wanneer het tabblad naar een nieuwe oorsprong navigeert. Het toevoegen van een nieuw verzoek overschrijft een bestaand verzoek voor documentId . Deze ID of documentId moet worden opgegeven.

Retourneert

  • Promise<void>

contains()

chrome.permissions.contains(
  permissions: Permissions,
)
: Promise<boolean>

Controleert of de extensie de opgegeven machtigingen heeft.

Parameters

Retourneert

  • Belofte<boolean>

    Chrome 96+

getAll()

chrome.permissions.getAll(): Promise<Permissions>

Haalt de huidige machtigingen van de extensie op.

Retourneert

remove()

chrome.permissions.remove(
  permissions: Permissions,
)
: Promise<boolean>

Verwijdert de toegang tot de opgegeven machtigingen. Als er problemen optreden bij het verwijderen van de machtigingen, wordt de promise afgewezen.

Parameters

Retourneert

  • Belofte<boolean>

    Chrome 96+

removeHostAccessRequest()

Chrome 133+ MV3+
chrome.permissions.removeHostAccessRequest(
  request: object,
)
: Promise<void>

Verwijdert een verzoek om toegang tot de host, indien aanwezig.

Parameters

  • verzoek

    voorwerp

    • documentId

      string optioneel

      De ID van een document waar het verzoek om hosttoegang wordt verwijderd. Dit moet het document op het hoogste niveau binnen een tabblad zijn. Deze ID of tabId moet worden opgegeven.

    • patroon

      string optioneel

      Het URL-patroon waarnaar het verzoek om hosttoegang moet worden verwijderd. Indien opgegeven, moet dit exact overeenkomen met het patroon van een bestaand verzoek om hosttoegang.

    • tabId

      nummer optioneel

      De ID van het tabblad waar het verzoek om hosttoegang wordt verwijderd. Deze ID of documentId moet worden opgegeven.

Retourneert

  • Promise<void>

request()

chrome.permissions.request(
  permissions: Permissions,
)
: Promise<boolean>

Vraagt ​​toegang tot de opgegeven machtigingen aan en toont indien nodig een prompt aan de gebruiker. Deze machtigingen moeten ofwel gedefinieerd zijn in het veld optional_permissions van het manifest, ofwel vereiste machtigingen zijn die door de gebruiker zijn geweigerd. Paden in oorsprongpatronen worden genegeerd. U kunt subsets van optionele oorsprongmachtigingen aanvragen; als u bijvoorbeeld *://*\/* opgeeft in het gedeelte optional_permissions van het manifest, kunt u http://example.com/ aanvragen. Als er problemen zijn bij het aanvragen van de machtigingen, wordt de promise afgewezen.

Parameters

Retourneert

  • Belofte<boolean>

    Chrome 96+

Evenementen

onAdded

chrome.permissions.onAdded.addListener(
  callback: function,
)

Wordt geactiveerd wanneer de extensie nieuwe machtigingen verkrijgt.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (permissions: Permissions) => void

onRemoved

chrome.permissions.onRemoved.addListener(
  callback: function,
)

Wordt geactiveerd wanneer de toegang tot machtigingen voor de extensie is ingetrokken.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (permissions: Permissions) => void