Spec-Zone.ru › Web Extensions

Идентификация

Используйте API идентификации, чтобы получить код авторизации OAuth2 или токен доступа, которые расширение может затем использовать для доступа к данным пользователя из сервиса, поддерживающего OAuth2 доступ (например, Google или Facebook).

Потоки OAuth2 различаются между поставщиками сервисов, поэтому для использования этого API с конкретным поставщиком сервисов ознакомьтесь с их документацией. Например:

  • Google
  • GitHub

API идентификации предоставляет функцию identity.launchWebAuthFlow(). Она аутентифицирует пользователя в сервисе, если необходимо, и просит пользователя разрешить расширению доступ к данным, если необходимо. Функция завершается с токеном доступа или кодом авторизации, в зависимости от поставщика.

Затем расширение завершает поток OAuth2 для получения валидного токена доступа и использует токен в запросах HTTPS для доступа к данным пользователя в соответствии с предоставленными пользователем разрешениями.

Для использования этого API необходимо разрешение "идентификация" API разрешение.

Настройка

Необходимо выполнить некоторые настройки перед публикацией расширения.

Получение URL перенаправления

URL перенаправления представляет конечную точку identity.launchWebAuthFlow(), на которую расширение получает токен доступа или код авторизации. Браузер извлекает результат из URL перенаправления без загрузки его ответа.

Вы получаете URL перенаправления, вызвав identity.getRedirectURL(). Эта функция вычисляет URL перенаправления из ID дополнения. Для упрощения тестирования, явно задайте ID дополнения, используя ключ browser_specific_settings (иначе каждый раз, когда вы временный установку дополнения, вы получаете другой URL перенаправления).

identity.getRedirectURL() возвращает URL на фиксированном доменном имени и поддомене, полученном из ID дополнения. Некоторые серверы OAuth (например, Google) принимают только домены с подтвержденной собственностью в качестве URL перенаправления. Поскольку домен-заглушка не может контролироваться разработчиками расширений, по умолчанию домен не всегда может быть использован.

Однако, альтернативой являются обратные адреса, которые не требуют проверки домена (на основе RFC 8252, раздел 7.3). Начиная с Firefox 86, обратный адрес в формате http://127.0.0.1/mozoauth2/[subdomain of URL returned by identity.getRedirectURL()] разрешен в качестве значения для URL перенаправления.

Примечание: Начиная с Firefox 75, необходимо использовать URL перенаправления, возвращаемый identity.getRedirectURL(). В более ранних версиях вы могли указать любой URL перенаправления.

Начиная с Firefox 86, можно использовать и описанный выше специальный обратный адрес.

Вы будете использовать URL перенаправления в двух местах:

  • указывать его при регистрации расширения как клиента OAuth2.
  • передавать его в identity.launchWebAuthFlow(), как параметр URL, добавленный к аргументу url этой функции.

Регистрация вашего расширения

Прежде чем использовать OAuth2 с поставщиком сервиса, необходимо зарегистрировать расширение у поставщика в качестве клиента OAuth2.

Это обычно зависит от поставщика сервиса, но в общем случае это означает создание записи для вашего расширения на веб-сайте поставщика. В этом процессе вы указываете свой URL перенаправления и получаете идентификатор клиента (и иногда также секрет). Вам необходимо передать оба этих значения в identity.launchWebAuthFlow().

Функции

identity.getRedirectURL()

Получает URL перенаправления.

identity.launchWebAuthFlow()

Запускает WAF.

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet
getRedirectURL Да 79 53 ? 60 Нет ? ? Нет ? Нет ?
launchWebAuthFlow Да 79 53 ? Да Нет ? ? Нет ? Нет ?

Примеры расширений

  • google-userinfo

Примечание: Этот API основан на API chrome.identity Chromium.

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/identity

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API