こんにちは、
問題
API(ドメイン A)を介して Discourse を SSO プロバイダーとして使用している場合、ソーシャルボタンを使用して Discourse(ドメイン B)に登録しようとすると、即座に create-account モーダルが表示されず、代わりに login モーダルに戻ってしまいます。
この時点で、login モーダルを閉じてから「Sign Up」ボタンをクリックすると、本来最初に表示されるはずだった create-account モーダルが表示されます。
問題のデモ
短い動画デモはこちらです:
- Edge ブラウザ(キャッシュ/クッキーをクリアし、拡張機能なし)
- Discourse を SSO プロバイダーとして設定した WP-Discourse を使用(問題を示す最も簡単な方法)
まず表示されるのは、WP-Discourse の SSO ログインリンクをクリックしている様子です。
Facebook ボタンをクリックした後、create-account ではなくログインの モーダル にリダイレクトされてしまいます。
考えられる原因
Discourse と API が呼び出される場所が 異なる ドメインを使用していることです。
プラグインなどが原因ではないことを確認するため、Discourse を SSO プロバイダーとして設定したクリーンな WordPress とクリーンな Discourse(どちらも 異なる ドメイン上)でも同様の問題を再現できました。
(注:これは WP-Discourse に特有の問題ではなく、問題を示す/テストするのが容易なだけです。Discourse API を消費し、SSO プロバイダーとしても機能する 弊社のアプリ でも同様に再現可能です)。
その他の情報
- Discourse のセキュリティ設定は無効化されています(効果があるかは不明ですが、CSP は無効、クッキーの設定は「None」または「Disabled」)。
- Discourse は最新バージョンです
- SSO でのログインに問題はありません
- ブラウザのコンソールや Discourse のログにエラーはありません
- SSO API で一度問題が発生すると、その後に Discourse 上で直接ソーシャルサインアップを試みても同じ問題が発生します。この場合、動作させるにはクッキー/キャッシュをクリアする必要があります(同様の問題はこちらで報告されています:https://meta.discourse.org/t/suggestion-unite-the-sign-up-log-in-buttons/160085)
Discourse は、手動で「Sign Up」をクリックした後に 事前入力済み のフィールドを含む期待される create-modal を表示できるため、バグか、Discourse が処理すべき状況があるのではないかと考えられますが、私の認識は間違っていますか?
この動作を修正するために何かできることはありますか?何か見落としているのでしょうか?
よろしくお願いいたします。