Привет,
Проблема
При использовании Discourse в качестве провайдера SSO через API (домен A), если вы попытаетесь зарегистрироваться в Discourse (домен B) с помощью кнопки соцсети, модальное окно create-account не появится сразу. Вместо этого вы вернетесь к модальному окну login.
В этот момент вам нужно закрыть окно login, затем нажать кнопку «Зарегистрироваться» (Sign Up), и вы увидите модальное окно create-account, которое должно было появиться изначально.
Демонстрация проблемы
Короткое видео-демо:
- Браузер Edge с очищенным кэшем/куками и без расширений.
- Используется плагин WP-Discourse, настроенный на использование Discourse как провайдера SSO (самый быстрый способ продемонстрировать проблему).
Сначала вы видите, как я нажимаю на ссылку входа через SSO от WP-Discourse.
После нажатия на кнопку Facebook я перенаправляюсь в модальное окно login вместо create-account.
Возможная причина
Мы используем разные домены для Discourse и для того места, откуда вызывается API.
Чтобы убедиться, что проблема не в плагинах или чём-то подобном, я смог воспроизвести её на чистой установке WordPress (с WP-Discourse, настроенным на использование Discourse как провайдера SSO) и на чистом Discourse. Оба находятся на разных доменах.
(Примечание: это не связано с WP-Discourse, это просто более удобный способ показать/протестировать проблему. Мы также можем воспроизвести это в нашем приложении, которое потребляет API Discourse и также выступает в роли провайдера SSO).
Дополнительная информация
- Настройки безопасности Discourse отключены (не уверен, влияет ли это: CSP отключен, куки установлены в значение None или Disabled).
- Discourse обновлён до последней версии.
- Проблем с входом через SSO нет.
- В консоли браузера и в логах Discourse ничего нет.
- Если вы столкнулись с проблемой один раз через API SSO и затем попытаетесь зарегистрироваться через соцсеть напрямую в Discourse, вы получите ту же проблему. В этом случае вам нужно очистить куки/кэш, чтобы всё заработало. (Аналогичная проблема описана здесь: Suggestion: unite the sign up & log in buttons)
Поскольку Discourse способен показать ожидаемое модальное окно create-modal с предзаполненными полями после ручного нажатия на «Зарегистрироваться», это заставляет меня думать, что существует ошибка или ситуация, которую Discourse должен обрабатывать. Не так ли?
Можно ли что-то сделать, чтобы исправить это поведение? Что-то упущено?
Спасибо!