chrome.permissions

Beschrijving

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

Begrippen en gebruik

Toestemmingswaarschuwingen beschrijven de mogelijkheden die een API biedt, maar sommige van deze waarschuwingen zijn mogelijk niet voor de hand liggend. Met de Permissions API kunnen ontwikkelaars toestemmingswaarschuwingen uitleggen en geleidelijk nieuwe functies introduceren, waardoor gebruikers zonder risico kennis kunnen maken met de extensie. Zo kunnen gebruikers aangeven hoeveel toegang ze willen verlenen en welke functies ze willen inschakelen.

De kernfunctionaliteit van de optionele machtigingenextensie is bijvoorbeeld het overschrijven van de nieuwe tabbladpagina. Eén functie is het weergeven van het doel van de gebruiker voor die dag. Deze functie vereist alleen de opslagmachtiging , die geen waarschuwing bevat. De extensie heeft een extra functie die gebruikers kunnen inschakelen door op de volgende knop te klikken:

Een extensieknop waarmee u extra functies kunt gebruiken.
Een extensieknop waarmee u extra functies kunt gebruiken.

Om de topsites van de gebruiker weer te geven, is de topSites- machtiging vereist. Deze bevat de volgende waarschuwing.

Axtension-waarschuwing voor topSites API.
Een extensiewaarschuwing voor topSites API

Optionele machtigingen implementeren

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

Een extensie kan zowel vereiste als optionele rechten declareren. Over het algemeen geldt het volgende:

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

Voordelen van vereiste machtigingen:

  • Minder vragen: een extensie kan de gebruiker één keer vragen om alle rechten te accepteren.
  • Eenvoudigere ontwikkeling: De vereiste rechten zijn gegarandeerd aanwezig.

Voordelen van optionele machtigingen:

  • Betere beveiliging: Extensies worden uitgevoerd met minder machtigingen, omdat gebruikers alleen de machtigingen inschakelen die nodig zijn.
  • Betere informatie voor gebruikers: een extensie kan uitleggen waarom er een bepaalde toestemming nodig is wanneer de gebruiker de relevante functie inschakelt.
  • Eenvoudigere upgrades: Wanneer u uw extensie upgradet, schakelt Chrome deze niet uit voor uw gebruikers als de upgrade optionele rechten toevoegt in plaats van vereiste rechten.

Stap 2: Declareer optionele machtigingen in het manifest

Declareer optionele machtigingen in uw extensiemanifest met de sleutel optional_permissions , waarbij u dezelfde indeling gebruikt als het veld machtigingen :

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

Als u hosts wilt aanvragen die u alleen tijdens runtime ontdekt, voegt u "https://*/*" toe aan het veld optional_host_permissions van uw extensie. Hiermee kunt u elke oorsprong in "Permissions.origins" opgeven, zolang deze een overeenkomend schema heeft.

Machtigingen die niet als optioneel kunnen worden opgegeven

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

Toestemming Beschrijving
"debugger" De chrome.debugger API dient als alternatief transport voor het externe foutopsporingsprotocol 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 ChromeOS . Gebruik de chrome.wallpaper API om de ChromeOS-achtergrond te wijzigen.

Bekijk Declare Permissions voor meer informatie over beschikbare machtigingen en de bijbehorende waarschuwingen.

Stap 3: Vraag optionele machtigingen aan

Vraag de rechten op vanuit een gebruikersgebaar 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 waarschuwt de gebruiker als het toevoegen van de rechten resulteert in andere waarschuwingsberichten dan de gebruiker al heeft gezien en geaccepteerd. De vorige code kan bijvoorbeeld een prompt als deze opleveren:

Een voorbeeld van een toestemmingsbevestigingsprompt.
Een voorbeeld van een toestemmingsbevestigingsprompt.

Stap 4: Controleer de huidige machtigingen van de extensie

Om te controleren of uw extensie een specifieke machtiging of 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

U moet machtigingen verwijderen wanneer u ze niet langer nodig hebt. Nadat een machtiging is verwijderd, wordt deze door het aanroepen van permissions.request() meestal weer teruggeplaatst zonder de gebruiker te vragen.

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

Typen

Permissions

Eigenschappen

  • oorsprong

    string[] optioneel

    De lijst met hostmachtigingen, inclusief de machtigingen die zijn opgegeven in de sleutels optional_permissions of permissions in het manifest, en de machtigingen die zijn gekoppeld aan Content Scripts .

  • toestemmingen

    string[] optioneel

    Lijst met benoemde machtigingen (exclusief hosts of oorsprongen).

Methoden

addHostAccessRequest()

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

Voegt een hosttoegangsverzoek toe. Het verzoek wordt alleen aan de gebruiker gesignaleerd als de extensie toegang tot de host in het verzoek kan krijgen. Het verzoek wordt gereset bij navigatie tussen verschillende bronnen. Bij acceptatie wordt permanente toegang verleend tot de hoofdbron van de site.

Parameters

  • verzoek

    voorwerp

    • document-ID

      string optioneel

      De id van een document waar hosttoegangsverzoeken 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 opgegeven 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.

    • tabbladId

      nummer optioneel

      De id van het tabblad waar hosttoegangsverzoeken kunnen worden weergegeven. Indien opgegeven, wordt het verzoek weergegeven op het opgegeven tabblad 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.

Retourneren

  • Belofte<leegte>

contains()

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

Controleert of de extensie de opgegeven machtigingen heeft.

Parameters

Retourneren

  • Belofte<boolean>

    Chroom 96+

getAll()

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

Haalt de huidige set machtigingen van de extensie op.

Retourneren

remove()

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

Verwijdert de toegang tot de opgegeven rechten. Als er problemen zijn met het verwijderen van de rechten, wordt runtime.lastError ingesteld.

Parameters

Retourneren

  • Belofte<boolean>

    Chroom 96+

removeHostAccessRequest()

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

Verwijdert een hosttoegangsaanvraag, indien aanwezig.

Parameters

  • verzoek

    voorwerp

    • document-ID

      string optioneel

      De id van een document waarvan de hosttoegangsaanvraag 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 waar de hosttoegangsaanvraag wordt verwijderd. Indien opgegeven, moet dit exact overeenkomen met het patroon van een bestaande hosttoegangsaanvraag.

    • tabbladId

      nummer optioneel

      De id van het tabblad waar de hosttoegangsaanvraag wordt verwijderd. Deze id of documentId moet worden opgegeven.

Retourneren

  • Belofte<leegte>

request()

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

Vraagt toegang tot de opgegeven machtigingen en toont indien nodig een prompt aan de gebruiker. Deze machtigingen moeten gedefinieerd zijn in het veld optional_permissions van het manifest of moeten vereiste machtigingen zijn die door de gebruiker zijn ingehouden. Paden op oorsprongspatronen worden genegeerd. U kunt subsets van optionele oorsprongsmachtigingen aanvragen; als u bijvoorbeeld *://*\/* opgeeft in de sectie optional_permissions van het manifest, kunt u http://example.com/ aanvragen. Als er problemen optreden bij het aanvragen van de machtigingen, wordt runtime.lastError ingesteld.

Parameters

Retourneren

  • Belofte<boolean>

    Chroom 96+

Evenementen

onAdded

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

Wordt geactiveerd wanneer de extensie nieuwe rechten verkrijgt.

Parameters

  • terugbellen

    functie

    De callback 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 verwijderd.

Parameters

  • terugbellen

    functie

    De callback ziet er als volgt uit:

    (permissions: Permissions) => void