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.
Overzicht
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.

Optionele machtigingen implementeren
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. |
"experimental" | Alleen beschikbaar voor het Canary- en Dev-kanaal . Geeft de extensie toegang tot de chrome.experimental API's. |
"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 declareren' en 'Gebruikers waarschuwen' 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
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
Controleert of de extensie de opgegeven machtigingen heeft.
Parameters
- toestemmingen
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(result: boolean) => void
- resultaat
booleaans
Retourneert True als de extensie de opgegeven machtigingen heeft. Als een oorsprong is opgegeven als zowel een optionele machtiging als een patroon voor het matchen van inhoudsscripts, retourneert dit
falsetenzij beide machtigingen zijn verleend.
Retourneert
Belofte<boolean>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
Haalt de huidige machtigingen van de extensie op.
Parameters
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(permissions: Permissions) => void
- toestemmingen
De actieve machtigingen van de extensie. Houd er rekening mee dat de eigenschap
originsde verleende origins bevat van de origins die zijn gespecificeerd in de sleutelspermissionsenoptional_permissionsin het manifest, en van de origins die zijn gekoppeld aan Content Scripts .
Retourneert
Belofte< Toestemmingen >
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): 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
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(removed: boolean) => void
- VERWIJDERD
booleaans
Dat klopt als de machtigingen zijn verwijderd.
Retourneert
Belofte<boolean>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): 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
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(granted: boolean) => void
- toegekend
booleaans
Retourneert 'waar' als de gebruiker de opgegeven machtigingen heeft verleend.
Retourneert
Belofte<boolean>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
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
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.
Overzicht
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.

Optionele machtigingen implementeren
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. |
"experimental" | Alleen beschikbaar voor het Canary- en Dev-kanaal . Geeft de extensie toegang tot de chrome.experimental API's. |
"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 declareren' en 'Gebruikers waarschuwen' 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
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
Controleert of de extensie de opgegeven machtigingen heeft.
Parameters
- toestemmingen
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(result: boolean) => void
- resultaat
booleaans
Retourneert True als de extensie de opgegeven machtigingen heeft. Als een oorsprong is opgegeven als zowel een optionele machtiging als een patroon voor het matchen van inhoudsscripts, retourneert dit
falsetenzij beide machtigingen zijn verleend.
Retourneert
Belofte<boolean>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
Haalt de huidige machtigingen van de extensie op.
Parameters
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(permissions: Permissions) => void
- toestemmingen
De actieve machtigingen van de extensie. Houd er rekening mee dat de eigenschap
originsde verleende origins bevat van de origins die zijn gespecificeerd in de sleutelspermissionsenoptional_permissionsin het manifest, en van de origins die zijn gekoppeld aan Content Scripts .
Retourneert
Belofte< Toestemmingen >
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): 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
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(removed: boolean) => void
- VERWIJDERD
booleaans
Dat klopt als de machtigingen zijn verwijderd.
Retourneert
Belofte<boolean>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): 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
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(granted: boolean) => void
- toegekend
booleaans
Retourneert 'waar' als de gebruiker de opgegeven machtigingen heeft verleend.
Retourneert
Belofte<boolean>
Chrome 96+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
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