Beschrijving
Gebruik de chrome.permissions
API om gedeclareerde optionele machtigingen tijdens runtime aan te vragen in plaats van tijdens de installatie, zodat gebruikers begrijpen waarom de machtigingen nodig zijn en alleen de machtigingen verlenen die nodig zijn.
Concepten en gebruik
Er bestaan toestemmingswaarschuwingen om de mogelijkheden te beschrijven die door een API worden verleend, maar sommige van deze waarschuwingen zijn misschien niet voor de hand liggend. Met de Permissions API kunnen ontwikkelaars toestemmingswaarschuwingen uitleggen en geleidelijk nieuwe functies introduceren, waardoor gebruikers een risicovrije introductie tot de extensie krijgen. Op deze manier kunnen gebruikers opgeven hoeveel toegang ze willen verlenen en welke functies ze willen inschakelen.
De kernfunctionaliteit van de optionele machtigingsextensie overschrijft bijvoorbeeld de nieuwe tabbladpagina. Eén functie is het weergeven van het doel van de dag van de gebruiker. Voor deze functie zijn alleen opslagrechten vereist, die geen waarschuwing bevatten. De extensie heeft een extra functie die gebruikers kunnen inschakelen door op de volgende knop te klikken:
Voor het weergeven van de topsites van de gebruiker is de toestemming topSites vereist, die de volgende waarschuwing bevat.
Implementeer optionele machtigingen
Stap 1: Bepaal welke machtigingen vereist zijn en welke optioneel zijn
Een extensie kan zowel vereiste als optionele machtigingen declareren. Over het algemeen moet u:
- 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 prompts: een extensie kan de gebruiker één keer vragen om alle machtigingen te accepteren.
- Eenvoudiger ontwikkelen: de vereiste machtigingen zijn gegarandeerd aanwezig.
Voordelen van optionele machtigingen:
- Betere beveiliging: Extensies worden uitgevoerd met minder machtigingen, omdat gebruikers alleen machtigingen inschakelen die nodig zijn.
- Betere informatie voor gebruikers: Een extensie kan uitleggen waarom deze een bepaalde toestemming nodig heeft wanneer de gebruiker de betreffende functie inschakelt.
- Gemakkelijkere 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 optional_permissions
sleutel, met dezelfde indeling als het machtigingsveld :
{
"name": "My extension",
...
"optional_permissions": ["tabs"],
"optional_host_permissions": ["https://www.google.com/"],
...
}
Als u hosts wilt aanvragen die u alleen tijdens runtime ontdekt, neemt u "https://*/*"
op in 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 protocol voor foutopsporing op afstand van Chrome. |
"declarativeNetRequest" | Verleent de extensie toegang tot de chrome.declarativeNetRequest API. |
"devtools" | Staat extensie toe om de Chrome DevTools- functionaliteit uit te breiden. |
"geolocation" | Hiermee kan de extensie de HTML5- geolocatie- API gebruiken. |
"mdns" | Verleent de extensie toegang tot de chrome.mdns API. |
"proxy" | Verleent 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-engine (TTS) 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 machtigingen aan 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 vraagt de gebruiker of het toevoegen van de rechten resulteert in andere waarschuwingsberichten dan de gebruiker al heeft gezien en geaccepteerd. De vorige code kan bijvoorbeeld resulteren in een prompt als deze:
Stap 4: Controleer de huidige rechten van de extensie
Om te controleren of uw extensie een specifieke machtiging of een reeks 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 deze niet langer nodig heeft. Nadat een machtiging is verwijderd, wordt door het aanroepen permissions.request()
de machtiging doorgaans weer toegevoegd 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
- oorsprong
tekenreeks[] optioneel
De lijst met hostmachtigingen, inclusief de machtigingen die zijn opgegeven in de
optional_permissions
ofpermissions
in het manifest, en de machtigingen die zijn gekoppeld aan Content Scripts . - machtigingen
tekenreeks[] optioneel
Lijst met benoemde machtigingen (exclusief hosts of oorsprong).
Methoden
addHostAccessRequest()
chrome.permissions.addHostAccessRequest(
request: object,
callback?: function,
)
Voegt een hosttoegangsverzoek toe. Verzoek wordt alleen aan de gebruiker gesignaleerd als in het verzoek toegang tot de host kan worden verleend. Verzoek wordt gereset bij cross-origin-navigatie. Indien geaccepteerd, wordt permanente toegang verleend tot de belangrijkste oorsprong van de site
Parameters
- verzoek
voorwerp
- documentId
tekenreeks optioneel
De id van een document waarin verzoeken om hosttoegang kunnen worden weergegeven. 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 oorsprong navigeert. Als u een nieuw verzoek toevoegt, wordt elk bestaand verzoek voor
tabId
overschreven. Dit oftabId
moet worden opgegeven. - patroon
tekenreeks optioneel
Het URL-patroon waar hosttoegangsverzoeken kunnen worden weergegeven. Indien opgegeven, worden hosttoegangsverzoeken alleen weergegeven op URL's die overeenkomen met dit patroon.
- tabId
nummer optioneel
De id van het tabblad waar hosttoegangsverzoeken kunnen worden weergegeven. Indien opgegeven, wordt het verzoek op het opgegeven tabblad weergegeven en verwijderd wanneer het tabblad naar een nieuwe oorsprong navigeert. Als u een nieuw verzoek toevoegt, wordt een bestaand verzoek om
documentId
overschreven. Deze ofdocumentId
moet worden opgegeven.
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:() => void
Retouren
Beloof <nietig>
Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
)
Controleert of de extensie de opgegeven rechten heeft.
Parameters
- machtigingen
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(result: boolean) => void
- resultaat
Booleaans
Waar als de extensie de opgegeven machtigingen heeft. Als een oorsprong is opgegeven als zowel een optionele machtiging als een overeenkomstpatroon voor het inhoudsscript, retourneert dit
false
tenzij beide machtigingen zijn verleend.
Retouren
Beloof<boolean>
Chroom 96+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
getAll()
chrome.permissions.getAll(
callback?: function,
)
Haalt de huidige set machtigingen van de extensie op.
Parameters
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(permissions: Permissions) => void
- machtigingen
De actieve rechten van de extensie. Houd er rekening mee dat de eigenschap
origins
toegekende oorsprongen bevat van de bronnen die zijn opgegeven in depermissions
enoptional_permissions
sleutels in het manifest en die zijn gekoppeld aan inhoudsscripts .
Retouren
Beloof < Toestemmingen >
Chroom 96+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
)
Verwijdert de toegang tot de opgegeven machtigingen. Als er problemen zijn bij het verwijderen van de machtigingen, wordt runtime.lastError
ingesteld.
Parameters
- machtigingen
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(removed: boolean) => void
- VERWIJDERD
Booleaans
Waar als de machtigingen zijn verwijderd.
Retouren
Beloof<boolean>
Chroom 96+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
removeHostAccessRequest()
chrome.permissions.removeHostAccessRequest(
request: object,
callback?: function,
)
Verwijdert een verzoek om hosttoegang, indien aanwezig.
Parameters
- verzoek
voorwerp
- documentId
tekenreeks optioneel
De ID van een document waarvan het hosttoegangsverzoek wordt verwijderd. Moet het document op het hoogste niveau binnen een tabblad zijn. Dit of
tabId
moet worden opgegeven. - patroon
tekenreeks optioneel
Het URL-patroon waar het hosttoegangsverzoek wordt verwijderd. Indien opgegeven, moet dit exact overeenkomen met het patroon van een bestaand hosttoegangsverzoek.
- tabId
nummer optioneel
De ID van het tabblad waar het hosttoegangsverzoek wordt verwijderd. Deze of
documentId
moet worden opgegeven.
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:() => void
Retouren
Beloof <nietig>
Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
)
Vraagt toegang tot de opgegeven machtigingen en geeft indien nodig een prompt aan de gebruiker weer. Deze machtigingen moeten worden gedefinieerd in het veld optional_permissions
van het manifest, of het 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 zijn bij het aanvragen van de machtigingen, wordt runtime.lastError
ingesteld.
Parameters
- machtigingen
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(granted: boolean) => void
- toegekend
Booleaans
Waar als de gebruiker de opgegeven machtigingen heeft verleend.
Retouren
Beloof<boolean>
Chroom 96+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
Evenementen
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
Wordt geactiveerd wanneer de extensie nieuwe machtigingen verkrijgt.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(permissions: Permissions) => void
- machtigingen
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
Wordt geactiveerd wanneer de toegang tot machtigingen uit de extensie is verwijderd.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(permissions: Permissions) => void
- machtigingen