URL всплывающего окна расширения Chrome

#google-chrome-extension #oauth-2.0 #discord #chrome-extension-manifest-v2

Вопрос:

Я пытаюсь добавить Discord OAuth2 в свое расширение Chrome, чтобы пользователь мог войти в систему с помощью учетной записи Discord, и это работает нормально. Он открывает новую вкладку, позволяет пользователю войти в систему и закрывает вкладку. Проблема в том, что я не знаю, что я должен вставить, redirect_uri чтобы после того, как пользователь нажмет «авторизоваться», он вернулся к всплывающему окну моего расширения.

Я попробовал это (получил это где-то из учебника по ИТ):

 const redirectUri = encodeURIComponent(
  "https://extensionId.chromiumapp.org/"
);
 

но это не работает. Каков URL-адрес всплывающего окна в моем расширении? Я знаю только его идентификатор.

Комментарии:

1. chrome.расширение.getURL(«folder/popup.html»)

2. URL-адрес всплывающего окна недоступен извне, поэтому вы не можете его использовать. Попробуйте использовать chrome.identity API. Альтернативой было бы использовать пример URL-адреса из учебника и перехватить его с помощью API chrome.WebRequest.onBeforeRequest.

3. @JohanHoeksma Я пробовал это, но discord не разрешает URL-адреса, начинающиеся с chrome:

4. @wOxxOm я использую launchWebAuthFlow из chrome.identity API, но проблема в том, что сразу после того, как я нажму aurhorize на странице авторизации, он закроет всплывающее окно расширения, я хотел бы авторизоваться и по-прежнему видеть всплывающее окно расширения

5. Существование всплывающего окна очень хрупкое, так как оно закрывается переключением вкладок или щелчком на странице, поэтому я предлагаю вам открыть новое окно с помощью chrome.windows.create type: 'popup' и url, представляющего собой отдельный html-файл, который запустит launchWebAuthFlow и обработает его. Таким образом, всплывающее окно может оставаться открытым и сможет получать сообщение из этого окна, отправленное через chrome.runtime.SendMessage.