chrome.permissions

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.

Übersicht

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:

Erweiterungsschaltfläche zur Aktivierung zusätzlicher Funktionen

Zum Anzeigen der Top-Websites des Nutzers ist die Berechtigung topSites erforderlich, die die folgende Warnung enthält.

Erweiterungswarnung für die topSites API

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 eine Erweiterung aktualisieren, wird sie für Ihre Nutzer nicht deaktiviert, wenn 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. Dadurch können Sie in Permissions.origins einen beliebigen Ursprung angeben, der mit einem ü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.
"experimental" Canary und Entwicklerversion Gewährt der Erweiterung Zugriff auf chrome.experimental APIs.
"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 und Nutzer warnen 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:

Beispiel für eine Aufforderung zum Bestätigen einer Berechtigung

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- oder permissions-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()

<ph type="x-smartling-placeholder"></ph> Versprechen
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&lt;boolean&gt;

    Chrome 96 und höher

    Promise-Objekte werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

getAll()

<ph type="x-smartling-placeholder"></ph> Versprechen
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üsseln permissions und optional_permissions angegebenen Quellen und von denen, die mit Content-Skripts verknüpft sind.

Gibt Folgendes zurück:

  • Promise&lt;Permissions&gt;

    Chrome 96 und höher

    Promise-Objekte werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

remove()

<ph type="x-smartling-placeholder"></ph> Versprechen
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&lt;boolean&gt;

    Chrome 96 und höher

    Promise-Objekte werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

request()

<ph type="x-smartling-placeholder"></ph> Versprechen
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&lt;boolean&gt;

    Chrome 96 und höher

    Promise-Objekte werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

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

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