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:

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

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:

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_permissionsofpermissionsin het manifest, en die welke zijn gekoppeld aan inhoudsscripts . - toestemmingen
string[] optioneel
Lijst met benoemde machtigingen (exclusief hosts of origins).
Methoden
addHostAccessRequest()
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 oftabIdmoet 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 ofdocumentIdmoet worden opgegeven.
Retourneert
Promise<void>
contains()
chrome.permissions.contains(
permissions: Permissions,
): Promise<boolean>
Controleert of de extensie de opgegeven machtigingen heeft.
Parameters
- toestemmingen
Retourneert
Belofte<boolean>
Chrome 96+
getAll()
chrome.permissions.getAll(): Promise<Permissions>
Haalt de huidige machtigingen van de extensie op.
Retourneert
Belofte< Toestemmingen >
Chrome 96+
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
- toestemmingen
Retourneert
Belofte<boolean>
Chrome 96+
removeHostAccessRequest()
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
tabIdmoet 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
documentIdmoet 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
- toestemmingen
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
callbackparameter 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 ingetrokken.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(permissions: Permissions) => void
- toestemmingen