はい、Patreon ログインの問題を「解決」する回避策を見つけました。手順は以下をご覧ください。![]()
必要なもの:
- ログインフォームを表示するためのショートコードを提供する任意のプラグイン(私のサイトには 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 を自サイトで行いたい他のユーザーのお役に立てれば幸いです。![]()
