Проблема с модальным окном входа через соцсети (новый пользователь) при программном открытии /login в iframe

Здравствуйте,

Контекст

Я создал приложение, которое использует Discourse API и SSO в качестве провайдера.
В настоящее время приложение отображается внутри iframe, поэтому для корректной работы социального входа страницу /login необходимо открывать вне iframe в новой вкладке браузера.
На данный момент всё работает.

Проблема

Когда новый пользователь регистрируется через социальную кнопку, его корректно перенаправляет на сайт соцсети, но когда он возвращается в Discourse, возникает проблема: Discourse показывает модальное окно входа вместо окна с уже заполненными именем пользователя или адресом электронной почты.
Чтобы увидеть это модальное окно и завершить регистрацию, нужно закрыть окно входа, а затем вручную нажать кнопку «Регистрация».

Только для новых пользователей вход работает как положено.
Не упустил ли я что-то или есть ли какой-то контекст, который Discourse обрабатывает некорректно? Технически это должно работать одинаково.

Если хотите увидеть демонстрацию, дайте знать — я могу отправить вам короткое видео в личном сообщении (в нём содержатся конфиденциальные данные).

Любая помощь будет очень кстати!

Вы используете последнюю версию Discourse?

Да. (извините за текст не на английском, я работаю с клиентом, использующим иврит)

Помогите, пожалуйста, разобраться с этим?

Если быть точнее, приложение используется в расширении Chrome. Мы используем iframe, потому что сейчас у нас нет другого выбора. Однако я всё ещё не понимаю, в чём разница между программным открытием новой вкладки браузера с адресом /login или /signup из iframe и ручным открытием вкладки и нажатием на кнопку входа/регистрации.

Можно ли это исправить в Discourse?

В данный момент мы используем Discourse как провайдера SSO. Есть ли другие способы?
Если да, то какой из них будет лучшим для реализации входа/регистрации в данном контексте?

Как вы это реализовали? Похоже, что где-то теряются куки или сессия.

В целом мы не поддерживаем использование Discourse в iframe. Как вы уже заметили, существуют странные особенности, которые могут вызывать проблемы.

Я не встраиваю Discourse в iframe. Я использую API для отображения сообщений темы.

Я не пытаюсь войти/зарегистрироваться внутри iframe, потому что социальные сайты не разрешают отображаться в них. Поэтому, когда пользователь нажимает кнопку внутри iframe, открывается новая вкладка браузера на страницу /login в Discourse.

Технически, когда пользователь нажимает кнопку входа, открывается новая вкладка с /session/sso_provider. return_sso_url будет содержать URL на бэкенд для обработки данных, сохранения информации о сессии пользователя, а затем ответа в виде HTML для автоматического закрытия окна. Приложение затем определит, что процесс завершен, и автоматически перезагрузится, чтобы использовать сохраненную сессию пользователя.

Даже если приложение не находилось бы в iframe, скорее всего, произошло бы то же самое. Поскольку это расширение браузера, у вас все равно нет выбора, кроме как открывать новую вкладку. Я задаюсь вопросом, есть ли лучшие способы входа/регистрации в этом случае.

РЕДАКТИРОВАНИЕ: Вот демо (не предназначалось для публики, но это самый короткий способ показать проблему, и мне кажется, что я недостаточно хорошо объясняю):
удалено, видео удалено, никому все равно
РЕДАКТИРОВАНИЕ 2: Похоже, это происходит только при использовании API /session/sso_provider; если я открываю URL Discourse напрямую (все еще из iframe), проблема, кажется, не возникает.