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.
Overzicht
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.
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 maar 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. |
"experimental" | Alleen Canary en Dev-kanaal . Geeft de extensie toegang tot 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 ChromeOS . Gebruik de chrome.wallpaper API om de ChromeOS-achtergrond te wijzigen. |
Bekijk Machtigingen declareren en gebruikers waarschuwen 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
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
Controleert of de extensie de opgegeven machtigingen heeft.
Parameters
- toestemmingen
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(result: boolean) => void
- resultaat
Booleaanse
True als de extensie de opgegeven rechten heeft. Als een oorsprong is opgegeven als zowel een optionele toestemming als een content script match-patroon, retourneert dit
false
tenzij beide rechten zijn verleend.
Retourneren
Belofte<boolean>
Chroom 96+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
Haalt de huidige set machtigingen van de extensie op.
Parameters
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(permissions: Permissions) => void
- toestemmingen
De actieve rechten van de extensie. Houd er rekening mee dat de eigenschap
origins
toegekende rechten bevat van de rechten die zijn gespecificeerd in de sleutelspermissions
enoptional_permissions
in het manifest, en van de rechten die zijn gekoppeld aan 'Content Scripts' .
Retourneren
Promise< Rechten >
Chroom 96+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): 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
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(removed: boolean) => void
- VERWIJDERD
Booleaanse
True als de machtigingen zijn verwijderd.
Retourneren
Belofte<boolean>
Chroom 96+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): 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
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(granted: boolean) => void
- toegekend
Booleaanse
True als de gebruiker de opgegeven machtigingen heeft verleend.
Retourneren
Belofte<boolean>
Chroom 96+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
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