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:

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

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:

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
ofpermissions
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()
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 oftabId
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 ofdocumentId
moet worden opgegeven.
Retourneren
Belofte<leegte>
contains()
chrome.permissions.contains(
permissions: Permissions,
): Promise<boolean>
Controleert of de extensie de opgegeven machtigingen heeft.
Parameters
- toestemmingen
Retourneren
Belofte<boolean>
Chroom 96+
getAll()
chrome.permissions.getAll(): Promise<Permissions>
Haalt de huidige set machtigingen van de extensie op.
Retourneren
Promise< Rechten >
Chroom 96+
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
- toestemmingen
Retourneren
Belofte<boolean>
Chroom 96+
removeHostAccessRequest()
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
- toestemmingen
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
- toestemmingen
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
- toestemmingen