Beschreibung
Verwenden Sie die chrome.permissions
API, um deklarierte optionale Berechtigungen zur Laufzeit anzufordern, anstatt zum Zeitpunkt der Installation. So verstehen Nutzer, warum die Berechtigungen erforderlich sind, und gewähren nur die notwendigen Berechtigungen.
Konzepte und Verwendung
Es gibt Berechtigungswarnungen, um die von einer API gewährten Funktionen zu beschreiben. Einige dieser Warnungen sind jedoch möglicherweise nicht offensichtlich. Mit der Permissions API können Entwickler Berechtigungswarnungen erklären und neue Funktionen schrittweise einführen. So erhalten Nutzer eine risikofreie Einführung in die Erweiterung. So können Nutzer angeben, welche Zugriffsrechte sie gewähren und welche Funktionen sie aktivieren möchten.
Beispielsweise überschreibt die Hauptfunktion der optionalen Erweiterung für Berechtigungen die Seite „Neuer Tab“. Eine Funktion zeigt das Tagesziel der Nutzenden an. Für diese Funktion ist nur die Berechtigung storage erforderlich, die keine Warnung enthält. Die Erweiterung verfügt über eine zusätzliche Funktion, die Nutzer durch Klicken auf die folgende Schaltfläche aktivieren können:
<ph type="x-smartling-placeholder">Zum Anzeigen der Top-Websites des Nutzers ist die Berechtigung topSites erforderlich, die die folgende Warnung enthält.
<ph type="x-smartling-placeholder">Optionale Berechtigungen implementieren
Schritt 1: Festlegen, welche Berechtigungen erforderlich und welche optional sind
Über eine Erweiterung können sowohl erforderliche als auch optionale Berechtigungen deklariert werden. Im Allgemeinen gilt Folgendes:
- Verwenden Sie die erforderlichen Berechtigungen, wenn sie für die grundlegenden Funktionen Ihrer Erweiterung erforderlich sind.
- Verwenden Sie optionale Berechtigungen, wenn sie für optionale Funktionen in Ihrer Erweiterung erforderlich sind.
Vorteile der erforderlichen Berechtigungen:
- Weniger Aufforderungen:Eine Erweiterung kann den Nutzer einmal auffordern, alle Berechtigungen zu akzeptieren.
- Einfachere Entwicklung:Die erforderlichen Berechtigungen sind garantiert vorhanden.
Vorteile optionaler Berechtigungen:
- Mehr Sicherheit:Erweiterungen werden mit weniger Berechtigungen ausgeführt, da Nutzer nur Berechtigungen aktivieren. die benötigt werden.
- Bessere Informationen für Nutzer:Eine Erweiterung kann erklären, warum eine bestimmte Berechtigung erforderlich ist. wenn der Nutzer die jeweilige Funktion aktiviert.
- Einfachere Upgrades: Wenn Sie ein Upgrade Ihrer Erweiterung ausführen, wird sie für Ihre Nutzer in den folgenden Fällen nicht deaktiviert: beim Upgrade werden optionale statt erforderliche Berechtigungen hinzugefügt.
Schritt 2: Optionale Berechtigungen im Manifest deklarieren
Deklariere im Erweiterungsmanifest optionale Berechtigungen mit dem Schlüssel optional_permissions
.
Verwenden Sie dabei dasselbe Format wie im Feld permissions:
{
"name": "My extension",
...
"optional_permissions": ["tabs"],
"optional_host_permissions": ["https://www.google.com/"],
...
}
Wenn Sie Hosts anfordern möchten, die Sie nur während der Laufzeit erkennen, fügen Sie "https://*/*"
in das Feld optional_host_permissions
Ihrer Erweiterung ein. So können Sie einen beliebigen Ursprung in "Permissions.origins"
angeben, sofern er einen übereinstimmenden
.
Berechtigungen, die nicht als optional angegeben werden können
Die meisten Berechtigungen für Chrome-Erweiterungen können optional festgelegt werden. Es gibt jedoch die folgenden Ausnahmen.
Berechtigung | Beschreibung |
---|---|
"debugger" |
Die chrome.debugger API dient als alternative Mobilität für Remote-Debugging von Chrome Protokoll. |
"declarativeNetRequest" |
Gewährt der Erweiterung Zugriff auf den chrome.declarativeNetRequest API verwenden. |
"devtools" |
Ermöglicht der Erweiterung, die Chrome-Entwicklertools zu erweitern Funktionalität. |
"geolocation" |
Ermöglicht der Erweiterung die Verwendung der HTML5-Geolocation API. |
"mdns" |
Gewährt der Erweiterung Zugriff auf die chrome.mdns API. |
"proxy" |
Gewährt der Erweiterung Zugriff auf die chrome.proxy API, um den Chrome-Proxy zu verwalten Einstellungen. |
"tts" |
Die chrome.tts API wird synthetisiert abgespielt. Sprachausgabe. |
"ttsEngine" |
Mit der chrome.ttsEngine API wird ein Text-to-Speech-Engine (TTS) mit einer Erweiterung. |
"wallpaper" |
Nur ChromeOS. chrome.wallpaper API verwenden und ChromeOS ändern Hintergrund. |
Unter Berechtigungen deklarieren finden Sie weitere Informationen zu verfügbaren Berechtigungen und ihre Warnungen.
Schritt 3: Optionale Berechtigungen anfordern
Fordern Sie die Berechtigungen innerhalb einer Nutzergeste mit permissions.request()
an:
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();
}
});
});
Wenn das Hinzufügen der Berechtigungen andere Warnmeldungen zur Folge hat als die der Nutzer bereits gesehen und akzeptiert hat. Der vorherige Code könnte beispielsweise zu einer Eingabeaufforderung wie der folgenden führen: dies:
<ph type="x-smartling-placeholder">Schritt 4: Aktuelle Berechtigungen der Erweiterung prüfen
Wenn Sie prüfen möchten, ob Ihre Erweiterung eine bestimmte Berechtigung oder Berechtigung hat, verwenden Sie
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.
}
});
Schritt 5: Berechtigungen entfernen
Sie sollten Berechtigungen entfernen, wenn Sie sie nicht mehr benötigen. Nachdem eine Berechtigung entfernt wurde,
Durch das Aufrufen von permissions.request()
wird die Berechtigung normalerweise wieder hinzugefügt, ohne dass der Nutzer dazu aufgefordert wird.
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
Attribute
-
Ursprünge
string[] optional
Die Liste der Hostberechtigungen, einschließlich der in den
optional_permissions
- oderpermissions
-Schlüsseln im Manifest angegebenen Berechtigungen und denen, die mit Content-Skripts verknüpft sind. -
Berechtigungen
string[] optional
Liste der benannten Berechtigungen (ohne Hosts oder Ursprünge).
Methoden
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
)
Prüft, ob die Erweiterung die angegebenen Berechtigungen hat.
Parameter
-
Berechtigungen
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(result: boolean) => void
-
Ergebnis
boolean
„True“, wenn die Erweiterung die angegebenen Berechtigungen hat. Wenn ein Ursprung sowohl als optionale Berechtigung als auch als Content-Script-Übereinstimmungsmuster angegeben ist, wird
false
zurückgegeben, sofern nicht beide Berechtigungen gewährt werden.
-
Gibt Folgendes zurück:
-
Promise<boolean>
Chrome 96 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
getAll()
chrome.permissions.getAll(
callback?: function,
)
Ruft die aktuellen Berechtigungen der Erweiterung ab.
Parameter
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(permissions: Permissions) => void
-
Berechtigungen
Die aktiven Berechtigungen der Erweiterung. Die Property
origins
enthält gewährte Ursprünge aus den im Manifest in den Schlüsselnpermissions
undoptional_permissions
angegebenen Quellen und von denen, die mit Content-Skripts verknüpft sind.
-
Gibt Folgendes zurück:
-
Promise<Permissions>
Chrome 96 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
)
Entfernt den Zugriff auf die angegebenen Berechtigungen. Sollten beim Entfernen der Berechtigungen Probleme auftreten, wird runtime.lastError
festgelegt.
Parameter
-
Berechtigungen
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(removed: boolean) => void
-
entfernt
boolean
„True“, wenn die Berechtigungen entfernt wurden.
-
Gibt Folgendes zurück:
-
Promise<boolean>
Chrome 96 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
)
Fordert den Zugriff auf die angegebenen Berechtigungen an, wobei bei Bedarf eine Aufforderung für den Nutzer angezeigt wird. Diese Berechtigungen müssen entweder im Feld „optional_permissions
“ des Manifests definiert werden oder erforderliche Berechtigungen sein, die der Nutzer nicht erteilt hat. Pfade nach Ursprungsmustern werden ignoriert. Sie können Teilmengen optionaler Ursprungsberechtigungen anfordern. Wenn du beispielsweise im optional_permissions
-Abschnitt des Manifests *://*\/*
angibst, kannst du http://example.com/
anfordern. Sollten beim Anfordern der Berechtigungen Probleme auftreten, wird runtime.lastError
festgelegt.
Parameter
-
Berechtigungen
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(granted: boolean) => void
-
Berechtigung erteilt
boolean
„True“, wenn der Nutzer die angegebenen Berechtigungen gewährt hat.
-
Gibt Folgendes zurück:
-
Promise<boolean>
Chrome 96 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
Ereignisse
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
Wird ausgelöst, wenn die Erweiterung neue Berechtigungen erhält.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(permissions: Permissions) => void
-
Berechtigungen
-
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
Wird ausgelöst, wenn der Erweiterung der Zugriff auf Berechtigungen entzogen wurde.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(permissions: Permissions) => void
-
Berechtigungen
-