WordPress SSO および Patreon ログイン

はい、Patreon ログインの問題を「解決」する回避策を見つけました。手順は以下をご覧ください。:slight_smile:

必要なもの:

  • ログインフォームを表示するためのショートコードを提供する任意のプラグイン(私のサイトには WooCommerce がインストールされているため、未ログインユーザーに対してまさにこれを行う [woocommerce_my_account] ショートコードを使用しました)。
  • ユーザーのログイン状態に応じてコンテンツの表示/非表示を切り替える [members_logged_in] および [members_not_logged_in] ショートコードを提供する Members プラグイン。同様のショートコード機能を提供する他のプラグインを使用することも可能です。
  • Shortcode Redirect プラグイン

アイデアは、未ログインユーザーにログインフォーム(および Patreon ログインボタン)を表示する特別なページを作成することです。ユーザーがログインしている場合は、https://community.morevnaproject.org/session/sso?return_path=%2F URL にリダイレクトされます。
(もちろん、「community.morevnaproject.org」はご自身のドメインに置き換えてください)。

私の特別なログインページのコンテンツは以下の通りです:

[members_not_logged_in]
   [woocommerce_my_account]
   [patreon_login_button]
[/members_not_logged_in]
[members_logged_in]
   [redirect url='https://community.morevnaproject.org/session/sso?return_path=%2F' sec='0']
[/members_logged_in]

(実際の動作はここで確認できます:https://morevnaproject.org/log-in-discourse/)

あとは、WP-Discourse プラグインを設定して SSO にそのページを使用するだけです:

Discourse で「Log In」ボタンをクリックすると、ユーザーは私の特別な WordPress ページにリダイレクトされます。ユーザーが未ログインのため、ログインフォームが表示されます。「Log in with Patreon」ボタンをクリックすると、認証のために Patreon にリダイレクトされます。認証が成功すると、再び私の特別なページにリダイレクトされます。ユーザーはすでにログインしているため、「redirect」ショートコードが有効になります:

[redirect url='https://community.morevnaproject.org/session/sso?return_path=%2F' sec='0']

…そしてユーザーは正常に Discourse フォーラムにリダイレクトされます。

URL の末尾にある session/sso?return_path=%2F の部分は必須です。これを省略すると、リダイレクト後に Discourse がユーザーをログイン済みとして認識しません。

以上です!WordPress と Patreon ログインを組み合わせた SSO を自サイトで行いたい他のユーザーのお役に立てれば幸いです。:slight_smile: