identity
Verwenden Sie die identity API, um einen OAuth2 Autorisierungscode oder Zugriffstoken zu erhalten, den eine Erweiterung dann nutzen kann, um auf Benutzerdaten von einem Dienst zuzugreifen, der OAuth2 unterstützt (wie Google oder Facebook).
OAuth2-Abläufe variieren je nach Dienstanbieter, daher sollten Sie zur Nutzung dieser API mit einem bestimmten Dienstanbieter dessen Dokumentation konsultieren. Zum Beispiel:
Die identity API stellt die Funktion identity.launchWebAuthFlow()
bereit. Diese authentifiziert den Benutzer bei dem Dienst, falls erforderlich, und bittet den Benutzer gegebenenfalls, die Erweiterung zur Datenzugriff zu autorisieren. Die Funktion schließt mit einem Zugriffstoken oder Autorisierungscode ab, abhängig vom Anbieter.
Die Erweiterung vervollständigt dann den OAuth2-Ablauf, um ein validiertes Zugriffstoken zu erhalten, und verwendet das Token in HTTPS-Anfragen, um gemäß der vom Benutzer gegebenen Autorisierung auf die Daten des Benutzers zuzugreifen.
Um diese API zu verwenden, müssen Sie die "identity" API-Berechtigung haben.
Einrichtung
Es gibt einige Vorbereitungen, die Sie treffen müssen, bevor Sie Ihre Erweiterung veröffentlichen.
Abrufen der Redirect-URL
Die Redirect-URL repräsentiert den Endpunkt von identity.launchWebAuthFlow()
, in dem das Zugriffstoken oder der Autorisierungscode an die Erweiterung übergeben wird. Der Browser extrahiert das Ergebnis aus der Redirect-URL, ohne deren Antwort zu laden.
Sie erhalten die Redirect-URL, indem Sie identity.getRedirectURL()
aufrufen. Diese Funktion leitet eine Redirect-URL von der ID des Add-Ons ab. Um das Testen zu vereinfachen, setzen Sie die ID Ihres Add-Ons explizit mithilfe des Schlüssels browser_specific_settings
(andernfalls erhalten Sie jedes Mal, wenn Sie das Add-On vorübergehend installieren, eine andere Redirect-URL).
identity.getRedirectURL()
gibt eine URL mit einem festen Domainnamen und einem Subdomain zurück, die von der ID des Add-Ons abgeleitet ist. Einige OAuth-Server (wie Google) akzeptieren nur Domains mit einem verifizierten Eigentum als Redirect-URL. Da die Dummy-Domain nicht von Erweiterungsentwicklern kontrolliert werden kann, kann die Standarddomain nicht immer verwendet werden.
Allerdings sind Loopback-Adressen eine akzeptierte Alternative, die keine Domainvalidierung erfordern (basierend auf RFC 8252, Abschnitt 7.3). Ab Firefox 86 ist eine Loopback-Adresse im Format http://127.0.0.1/mozoauth2/[subdomain of URL returned by identity.getRedirectURL()]
als Wert für die Redirect-URL zulässig.
Hinweis:
Ab Firefox 75 müssen Sie die von identity.getRedirectURL()
zurückgegebene Redirect-URL verwenden. Früheren Versionen erlaubten es Ihnen, eine beliebige Redirect-URL anzugeben.
Ab Firefox 86 kann auch die oben beschriebene spezielle Loopback-Adresse verwendet werden.
Sie werden die Redirect-URL an zwei Stellen verwenden:
- Sie geben sie bei der Registrierung Ihrer Erweiterung als OAuth2-Client an.
- Sie übergeben sie als URL-Parameter in
identity.launchWebAuthFlow()
, die zururl
-Argument dieser Funktion hinzugefügt wird.
Registrierung Ihrer Erweiterung
Bevor Sie OAuth2 mit einem Dienstanbieter verwenden, müssen Sie die Erweiterung beim Anbieter als OAuth2-Client registrieren.
Dies wird in der Regel spezifisch für den Dienstanbieter sein, bedeutet aber im Allgemeinen, dass Sie auf der Website des Anbieters einen Eintrag für Ihre Erweiterung erstellen. In diesem Prozess geben Sie Ihre Redirect-URL an und erhalten eine Client-ID (und manchmal auch ein Geheimnis). Sie müssen beide in identity.launchWebAuthFlow()
übergeben.
Funktionen
identity.getRedirectURL()
-
Ruft die Redirect-URL ab.
identity.launchWebAuthFlow()
-
Startet WAF.
Beispielerweiterungen
Browser-Kompatibilität
Hinweis:
Diese API basiert auf der chrome.identity
API von Chromium.