こんにちは
Discourse Patreon プラグインを使用していますが、問題が発生しました。統合は、Discourse と Patreon の両方で同じメールアドレスを持つユーザーにとっては完全に機能します。アカウントをリンクして正しいグループ/特典を取得できます。
しかし、Patreon と Discourse で異なるメールアドレスを持つユーザーの場合、Discourse プロファイルの「接続」ボタンから Patreon アカウントをリンクしようとすると、Patreon で承認した後に次のエラーが発生します。
申し訳ありませんが、Patreon でアカウントを承認しようとした際にエラーが発生しました。もう一度お試しください。
これは、デバイスやブラウザに関係なく発生します。
重要: プラグインはそれ以外は正常に機能しています。メールアドレスが一致するユーザーはペアリングされ、特典を受け取っています。したがって、クライアント ID、シークレット、リダイレクト URI はすべて正しく設定されています。
試したこと:
- 手動でのグループ割り当て(同期によって削除されます)
- すべてのプラグインと Patreon アプリの設定を再確認
- 複数のデバイスとブラウザでテスト
メールアドレスが異なるユーザーが Patreon アカウントを既存の Discourse アカウントにリンクできるようにする方法、または少なくともこのエラーを回避する方法はありますか?
アドバイスやベストプラクティスがあれば、大いに感謝いたします。
ありがとうございます。
「いいね!」 2
Watson
(Watson)
4
長らく Discourse の Patreon プラグインで API V1 を使用して Patreon でサインインしていましたが、これは公式の Discourse Patreon プラグインのドキュメントで推奨されている設定です: Configure Patreon integration with Discourse

しかし、Patreon は V1 を長年サポートしておらず、常に問題が発生し、完全に同期せず、最近ではまったく機能しなくなりました。
問題は、Patreon がサポートしている API V2 に切り替えると、ユーザーの認証に失敗することです。ユーザーが「Patreon でログイン」をクリックして、API v2 が Patreon アカウントに接続することを許可すると、次のエラーが表示されます。
申し訳ありませんが、Patreon でアカウントを認証しようとした際にエラーが発生しました。もう一度お試しください。
そして、公式の Patreon プラグイン Discourse のドキュメントには、API v2 がこれらの認証エラーを引き起こす可能性があると specifically 記載されています。これは v2 を使用不能にします。
幸いなことに、API v2 を機能させるための回避策を見つけました。このソリューションは公式ドキュメントに追加されるべきです。なぜなら、現在推奨されている API v1 は完全に壊れているからです。
ソリューション
ソリューションは、カスタム OAuth2 を作成することです。ユーザーは Patreon プラグインの「Patreon でログイン」ボタンを使用する代わりに、独自の OAuth で Patreon と認証するカスタムログインボタンを使用します。
ステップ 1: Patreon にこれらのリダイレクト URI を追加します。
ステップ 2: Discourse で Admin > ログインと認証 > OAuth2 に移動し、次のように設定します。
-
oauth2_enabled: true
-
oauth2_client_id: <your Patreon client id>
-
oauth2_client_secret: <your Patreon client secret>
-
oauth2_authorize_url: https://www.patreon.com/oauth2/authorize
-
oauth2_authorize_signup_url: (空白のまま)
-
oauth2_token_url: https://www.patreon.com/api/oauth2/token
-
oauth2_callback_user_id_path: (空白のまま)
-
oauth2_callback_user_info_paths: email
-
oauth2_token_url_method: POST
-
oauth2_callback_user_info_paths: email
-
oauth2_fetch_user_details: true
-
oauth2_user_json_url: https://www.patreon.com/api/oauth2/v2/identity?include=memberships&fields[user]=email,full_name,vanity
-
oauth2_json_user_id_path: data.id
-
oauth2_json_name_path: data.attributes.full_name
-
oauth2_json_username_path: data.attributes.vanity
-
oauth2_json_email_path: data.attributes.email
-
oauth2_json_email_verified_path: (空白のまま)
-
oauth2_email_verified: true (プロンプトを減らすためにプロバイダーを信頼します) メールアドレスを持たないパトロンがいる場合は、これを false に設定し、サインアッププロンプトを予想してください。
-
oauth2_email_verified: true
-
oauth2_send_auth_header: true
-
oauth2_send_auth_body: true
-
oauth2_debug_auth: true
-
oauth2_authorize_options: scope
-
oauth2_scope: identity identity[email] campaigns campaigns.members
-
oauth2_button_title: Login with with Patreon
-
oauth2_allow_association_change: false (推奨)
ステップ 3: Discourse のコアログインコントロールで次のように設定します。
-
enable sso: false
-
patreon login enabled: false (2つの Patreon ボタンを防ぎます。同期のみのためにプラグインを保持してください)
-
allow new registrations: 次のいずれかを選択します。
- 新しいパトロンがアカウントを作成できるようにするには true
- 既存の Discourse ユーザーのみがログインできるようにするには false
-
invite only: テスト中は false
-
must approve users: テスト中は false
-
session_cookie_domain: (空白)
ステップ 4: Discourse の yml ファイルで、ネットワークとホストについて次のように設定します。
ステップ 5: アプリを再構築して変更を実装します。
cd /var/discourse
./launcher rebuild app
結果:
これで、Patreon と正しく同期する独自の動作する OAuth2 ログインボタン (Patreon) が API v2 で機能するようになり、ユーザーグループが Patreon と正しく同期されます。
「いいね!」 1
お見事です、@watson さん!現時点では、あなたの解決策をこのトピックに移動しました。公式の Patreon プラグインの改善/修正に関するものなので、Feature に移動しました。もし他に1、2名があなたの手順を再現して確認できれば、公式の Patreon の指示を更新する必要があると思います。