Я провел несколько часов исследований по своей проблеме и думаю, что уже близко к решению, но, возможно, мне нужен небольшой толчок в правильном направлении.
По сути, я пытаюсь интегрировать Discourse как headless-решение в свой React-проект, который уже содержит аутентифицированных пользователей в собственной базе данных.
Для этого, когда пользователь входит в систему на странице React, будет выполняться SSO для аутентификации пользователя через API Discourse, чтобы мы могли вызывать соответствующие функции и так далее.
Сначала я делаю запрос к URL-адресу Discourse и предотвращаю любые перенаправления следующим образом:
const response = await fetch('https://forum.mysite.com/session/sso', {
method: 'GET',
redirect: 'manual', // Предотвращение автоматического следования перенаправлениям
});
Затем я выполняю всю процедуру валидации и отправляю Payload с информацией о пользователе на бэкенд, используя:
const loginResponse = await fetch(newurl.toString(), {
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'manual',
});
Форматирование, подпись и прочее выглядят правильно. Но я получаю ошибку. Поэтому я закомментировал этот код, скопировал сгенерированный URL в браузер, чтобы посмотреть, что происходит, и получил следующее:
Подробный лог SSO: Nonce неверен, был сгенерирован в другой сессии браузера или истек add_groups: admin: avatar_force_update: avatar_url: bio: card_background_url: confirmed_2fa: e
После некоторых исследований я думаю, что эти ответы близки к тому, чтобы помочь мне, но я все еще не совсем понимаю, что нужно изменить в моей настройке. Кроме того, параметр force_https, похоже, больше нельзя изменить (я даже не уверен, что он делает):
Мне кажется, что проблема может быть связана с разными сессиями браузера, но я не уверен. Думаю, я уже близко к решению, мне нужен лишь небольшой толчок. Любая информация будет полезна. Спасибо!
