問題解決のために数時間調査しましたが、あと一歩のところまできているようです。少しだけ後押しが必要かもしれません。
基本的に、すでに独自のDBに認証済みのユーザーがいるReactプロジェクトに、Discourseをヘッドレス実装として統合しようとしています。
これを実現するために、ユーザーがReactページでログインすると、Discourse APIとの認証のためのSSOを実行し、適切な関数などを呼び出せるようにします。
まず、DiscourseのURLからリダイレクトを無効にしてフェッチしています。
const response = await fetch('https://forum.mysite.com/session/sso', {
method: 'GET',
redirect: 'manual', // リダイレクトの自動追従を無効にする
});
次に、検証を行い、ユーザー情報を含むペイロードをバックエンドに送信します。
const loginResponse = await fetch(newurl.toString(), {
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'manual',
});
フォーマットや署名などは問題ないようです。しかし、エラーが発生します。そこで、これをコメントアウトし、生成されたURLをブラウザにコピーして確認したところ、以下のエラーが表示されました。
Verbose SSO log: Nonce is incorrect, was generated in a different browser session, or has expired add_groups: admin: avatar_force_update: avatar_url: bio: card_background_url: confirmed_2fa: e
少し調査したところ、これらの回答が役立ちそうですが、私の設定で何をどのように変更すればよいのかまだよくわかりません。また、force_https はもはや操作できない設定のようで、その機能もよくわかりません。
異なるブラウザセッションが原因である可能性が高いと思いますが、確信はありません。しかし、これを機能させるまであと一歩だと感じています。少しだけ後押しが必要です。何か情報があれば助かります。ありがとうございます!
