Веб-расширение Safari Войти с помощью Google

Safari теперь может использовать веб-расширения.

Но browser.identity или же chrome.identityне поддерживается. Так launchWebAuthFlow не работает.

В документах так и сказано.

личность Не поддерживается. На новой вкладке инициируйте поток OAuth.

Как мне это сделать? Есть какой-нибудь пример?

1 ответ

В настоящее время кажется невозможным реализовать поток OAuth в веб-расширении Safari.

Существует ветка разработчиков Apple, в которой есть обходной путь, включающий перенаправление на случайный URL-адрес и перехват его в , но, похоже, с Safari 15.4 он не работает: https://developer.apple.com/forums/thread/670165

2021:

В качестве обходного пути вы можете использовать любой доступный URL-адрес в качестве URL-адреса перенаправления OAuth и использоватьwebRequest.onBeforeRedirectдля захвата попытки перенаправления и «принудительного перенаправления», например, с помощью tabs.update.

2023:

The webRequestAPI недоступен для непостоянных фоновых страниц (или сервис-воркеров), а версия 3 запрещает постоянные фоновые страницы. declarativeNetRequestпозволяет перенаправить на путь в вашем расширении, но по этому маршруту исходный запрос недоступен. Обходным решением этой проблемы является перенаправление с использованием regexSubstitution. Это отлично работает в Chrome, но не в Safari, поскольку перенаправление на safari-web-extension:// заблокировано.

ОП создал отчет об ошибках Webkit, который может оказаться полезным: https://bugs.webkit.org/show_bug.cgi?id=256054 .

Ошибка: перенаправление на URL-адрес со схемой, отличной от HTTP(S).

Другие вопросы по тегам