Beschreibung
Verwenden Sie die chrome.permissions
API, um deklarierte optionale Berechtigungen zur Laufzeit statt zur Installationszeit anzufordern. So können Nutzer nachvollziehen, warum die Berechtigungen erforderlich sind, und nur die Berechtigungen erteilen, die wirklich benötigt werden.
Konzepte und Verwendung
Berechtigungswarnungen beschreiben die Funktionen, die durch eine API gewährt werden. Einige dieser Warnungen sind jedoch möglicherweise nicht offensichtlich. Mit der Permissions API können Entwickler Berechtigungswarnungen erläutern und neue Funktionen nach und nach einführen. So können Nutzer die Erweiterung risikofrei kennenlernen. So können Nutzer festlegen, wie viel Zugriff sie gewähren möchten und welche Funktionen sie aktivieren möchten.
Die Kernfunktion der Erweiterung mit optionalen Berechtigungen besteht beispielsweise darin, die Seite „Neuer Tab“ zu überschreiben. Eine Funktion zeigt das Tagesziel des Nutzers an. Für diese Funktion ist nur die Berechtigung Speicher erforderlich, die keine Warnung enthält. Die Erweiterung hat eine zusätzliche Funktion, die Nutzer durch Klicken auf die folgende Schaltfläche aktivieren können:

Für die Anzeige der wichtigsten Websites des Nutzers ist die Berechtigung topSites erforderlich, für die die folgende Warnung gilt.

topSites
APIOptionale Berechtigungen implementieren
Schritt 1: Erforderliche und optionale Berechtigungen festlegen
Eine Erweiterung kann sowohl erforderliche als auch optionale Berechtigungen deklarieren. Im Allgemeinen gilt Folgendes:
- Verwenden Sie erforderliche Berechtigungen, wenn sie für die grundlegenden Funktionen Ihrer Erweiterung benötigt werden.
- Verwenden Sie optionale Berechtigungen, wenn sie für optionale Funktionen in Ihrer Erweiterung erforderlich sind.
Vorteile von erforderlichen Berechtigungen:
- Weniger Aufforderungen:Eine Erweiterung kann den Nutzer einmal auffordern, alle Berechtigungen zu akzeptieren.
- Einfachere Entwicklung:Die erforderlichen Berechtigungen sind garantiert vorhanden.
Vorteile von optionalen Berechtigungen:
- Höhere Sicherheit:Erweiterungen werden mit weniger Berechtigungen ausgeführt, da Nutzer nur die Berechtigungen aktivieren, die benötigt werden.
- Bessere Informationen für Nutzer:Eine Erweiterung kann erklären, warum sie eine bestimmte Berechtigung benötigt, wenn der Nutzer die entsprechende Funktion aktiviert.
- Einfachere Upgrades:Wenn Sie Ihre Erweiterung aktualisieren, wird sie von Chrome nicht für Ihre Nutzer deaktiviert, wenn durch das Upgrade optionale statt erforderlicher Berechtigungen hinzugefügt werden.
Schritt 2: Optionale Berechtigungen im Manifest deklarieren
Deklarieren Sie optionale Berechtigungen in Ihrem Erweiterungsmanifest mit dem Schlüssel optional_permissions
im selben Format wie das Feld permissions:
{ "name": "My extension", ... "optional_permissions": ["tabs"], "optional_host_permissions": ["https://www.google.com/"], ... }
Wenn Sie Hosts anfordern möchten, die erst zur Laufzeit ermittelt werden, 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 ein passendes Schema hat.
Berechtigungen, die nicht als optional angegeben werden können
Die meisten Berechtigungen für Chrome-Erweiterungen können als optional angegeben werden. Die folgenden Berechtigungen sind jedoch Ausnahmen:
Berechtigung | Beschreibung |
---|---|
"debugger" | Die chrome.debugger API dient als alternativer Transport für das Protokoll für das Remote-Debugging von Chrome. |
"declarativeNetRequest" | Gewährt der Erweiterung Zugriff auf die chrome.declarativeNetRequest API. |
"devtools" | Ermöglicht es der Erweiterung, die Funktionen von Chrome-Entwicklertools zu erweitern. |
"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 die Proxy-Einstellungen von Chrome zu verwalten. |
"tts" | Mit der chrome.tts API wird synthetische Sprachausgabe wiedergegeben. |
"ttsEngine" | Die chrome.ttsEngine API implementiert eine Text-to-Speech-Engine (TTS) mithilfe einer Erweiterung. |
"wallpaper" | Nur ChromeOS Verwenden Sie die chrome.wallpaper API, um das ChromeOS-Hintergrundbild zu ändern. |
Weitere Informationen zu verfügbaren Berechtigungen und den zugehörigen Warnungen finden Sie unter Berechtigungen deklarieren.
Schritt 3: Optionale Berechtigungen anfordern
Berechtigungen über eine Nutzeraktion mit permissions.request()
anfordern:
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 fordert den Nutzer auf, die Berechtigungen zu bestätigen, wenn durch das Hinzufügen der Berechtigungen andere Warnmeldungen angezeigt werden als die, die der Nutzer bereits gesehen und akzeptiert hat. Der vorherige Code kann beispielsweise zu einem Prompt wie diesem führen:

Schritt 4: Aktuelle Berechtigungen der Erweiterung prüfen
Mit permission.contains()
können Sie prüfen, ob Ihre Erweiterung eine bestimmte Berechtigung oder eine bestimmte Gruppe von Berechtigungen hat:
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, wird sie durch den Aufruf von permissions.request()
in der Regel 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 im Manifest in den Schlüsseln
optional_permissions
oderpermissions
angegebenen Berechtigungen und der mit Content-Scripts verknüpften Berechtigungen. - Berechtigungen
string[] optional
Liste der benannten Berechtigungen (ohne Hosts oder Ursprünge).
Methoden
addHostAccessRequest()
chrome.permissions.addHostAccessRequest(
request: object,
): Promise<void>
Fügt eine Hostzugriffsanfrage hinzu. Die Anfrage wird dem Nutzer nur angezeigt, wenn der Erweiterung Zugriff auf den Host in der Anfrage gewährt werden kann. Die Anfrage wird bei der ursprungsübergreifenden Navigation zurückgesetzt. Wenn akzeptiert, wird dauerhafter Zugriff auf den Top-Ursprung der Website gewährt.
Parameter
- Anfrage
Objekt
- documentId
String optional
Die ID eines Dokuments, in dem Hostzugriffsanfragen angezeigt werden können. Muss das Dokument der obersten Ebene auf einem Tab sein. Wenn angegeben, wird die Anfrage auf dem Tab des angegebenen Dokuments angezeigt und entfernt, wenn das Dokument zu einem neuen Ursprung wechselt. Wenn Sie eine neue Anfrage hinzufügen, wird jede vorhandene Anfrage für
tabId
überschrieben. Entweder muss dieser Wert odertabId
angegeben werden. - Muster
String optional
Das URL-Muster, in dem Hostzugriffsanfragen angezeigt werden können. Wenn angegeben, werden Hostzugriffsanfragen nur für URLs angezeigt, die mit diesem Muster übereinstimmen.
- tabId
number optional
Die ID des Tabs, auf dem Hostzugriffsanfragen angezeigt werden können. Wenn angegeben, wird die Anfrage auf dem angegebenen Tab angezeigt und entfernt, wenn der Tab zu einem neuen Ursprung wechselt. Wenn Sie eine neue Anfrage hinzufügen, wird eine vorhandene Anfrage für
documentId
überschrieben. Entweder muss dieser Wert oderdocumentId
angegeben werden.
-
Ausgabe
-
Promise<void>
contains()
chrome.permissions.contains(
permissions: Permissions,
): Promise<boolean>
Prüft, ob die Erweiterung die angegebenen Berechtigungen hat.
Parameter
- Berechtigungen
Ausgabe
-
Promise<boolean>
Chrome 96 und höher
getAll()
chrome.permissions.getAll(): Promise<Permissions>
Ruft die aktuellen Berechtigungen der Erweiterung ab.
Ausgabe
-
Promise<Permissions>
Chrome 96 und höher
remove()
chrome.permissions.remove(
permissions: Permissions,
): Promise<boolean>
Entfernt den Zugriff auf die angegebenen Berechtigungen. Wenn beim Entfernen der Berechtigungen Probleme auftreten, wird runtime.lastError
festgelegt.
Parameter
- Berechtigungen
Ausgabe
-
Promise<boolean>
Chrome 96 und höher
removeHostAccessRequest()
chrome.permissions.removeHostAccessRequest(
request: object,
): Promise<void>
Entfernt eine Hostzugriffsanfrage, sofern vorhanden.
Parameter
- Anfrage
Objekt
- documentId
String optional
Die ID eines Dokuments, für das die Hostzugriffsanfrage entfernt wird. Muss das Dokument der obersten Ebene auf einem Tab sein. Entweder muss dieser Wert oder
tabId
angegeben werden. - Muster
String optional
Das URL-Muster, für das die Hostzugriffsanfrage entfernt wird. Falls angegeben, muss sie genau mit dem Muster einer vorhandenen Hostzugriffsanfrage übereinstimmen.
- tabId
number optional
Die ID des Tabs, auf dem die Hostzugriffsanfrage entfernt wird. Entweder muss dieser Wert oder
documentId
angegeben werden.
-
Ausgabe
-
Promise<void>
request()
chrome.permissions.request(
permissions: Permissions,
): Promise<boolean>
Fordert Zugriff auf die angegebenen Berechtigungen an und zeigt dem Nutzer bei Bedarf eine Aufforderung an. Diese Berechtigungen müssen entweder im Feld optional_permissions
des Manifests definiert sein oder es muss sich um erforderliche Berechtigungen handeln, die vom Nutzer zurückgehalten wurden. Pfade in Ursprungsmustern werden ignoriert. Sie können Teilmengen optionaler Ursprungsberechtigungen anfordern. Wenn Sie beispielsweise *://*\/*
im Abschnitt optional_permissions
des Manifests angeben, können Sie http://example.com/
anfordern. Wenn beim Anfordern der Berechtigungen Probleme auftreten, wird runtime.lastError
festgelegt.
Parameter
- Berechtigungen
Ausgabe
-
Promise<boolean>
Chrome 96 und höher
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:(permissions: Permissions) => void
- Berechtigungen
-
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
Wird ausgelöst, wenn der Zugriff auf Berechtigungen aus der Erweiterung entfernt wurde.
Parameter
- callback
Funktion
Der Parameter
callback
sieht so aus:(permissions: Permissions) => void
- Berechtigungen
-