Discourse 公開失敗エラー 403

私は複数の著者が投稿する WordPress ブログを運営しています。すべての著者に Discourse でアカウントを作成させずに投稿機能を利用するにはどうすればよいでしょうか?この問題を解決するために、WordPress と Discourse で SSO を使用するべきでしょうか?

著者が Discourse で自分の名前で投稿できるようにしたい場合、Discourse アカウントの作成が必要です。これには SSO(シングルサインオン)が有効なアプローチですが、SSO を有効にすると、ユーザーは WordPress サイト経由でのみフォーラムにログインできるようになります。これがご希望に添わない場合もあります。

もう一つの選択肢として、すべての投稿を WordPress から Discourse の単一の Discourse ユーザー名で公開する方法があります。ユーザーが Discourse ユーザー名の設定を空白のままにすると、投稿はプラグインの「接続設定」タブで設定した「公開ユーザー名」を介して Discourse に公開されます。

興味深いですね。私の確認範囲では、私の著者全員がその設定を行っているわけではありません。ユーザープロフィールを見ると、Discourse ユーザー名設定のオプションが表示されません。どこで見つかるのでしょうか?

さらに、Discourse WordPress プラグインで以下の設定を使用していることに気づきました:

WordPress ユーザープロフィールページから Discourse 名フィールドを削除します。

Discourse 名フィールドを表示しない - SSO が有効でない場合、この設定により Discourse に公開されるすべての投稿が「公開ユーザー名」で公開されます。

上記の設定により、すべての投稿が「公開ユーザー名」設定で定義されたユーザーとして投稿されるものと理解しています。

何が不足しているのでしょうか?

ありがとうございます。Discourse 名フィールドの非表示が設定されていることに気づきました。これにより、すべての投稿が投稿者のユーザー名に強制されるはずです。

はい、投稿を著者自身の Discourse ユーザー名で行いたい場合は、それを無効にしてください。おそらく問題なく設定できるはずです(Extra などの一部のテーマは、プロフィールページでユーザー名を非表示にすることで、編集を防止しています)。追記:このトピックのタイトルがエラー番号であることがわかりました。私が述べたことがその問題を解決するかどうかはわかりません。

はい、その通りです。WordPress からあなたのアカウントで Discourse に投稿を公開することはできますか?

投稿を Discourse に公開する際に 403 エラーが発生する最も一般的な原因は、Discourse ユーザー名の設定が正しくないことです。「Discourse 名フィールドを表示しない」設定を一時的に無効にし、いくつかの著者のプロフィールページを確認することをお勧めします。著者の Discourse ユーザー名フィールドが空になっていることを確認してください。これは、ユーザーのプロフィールページの「連絡先情報」セクションにあります。

まもなく、Discourse ユーザー名を「連絡先情報」セクションから移動させ、サイト管理者が著者に対して Discourse ユーザー名を手動で設定できるようにする一方、著者にはその設定を非表示にするオプションも追加する予定です。これはセキュリティ上の理由によるもので、複数の著者がいるサイトにおいて、正しい Discourse ユーザー名が使用されていることを保証するためです。

なるほど、予想通りですね。

ユーザー名が一致していないことが問題だと思っていたのですが、「Discourse 名フィールドを表示しない」を有効にすれば、すべて上書きされると思っていたんです。

あなたが言及してくれた変更は、本当に役立つと思います。

オプションをオフにして投稿を試みましたが、同じエラーが発生しました。

オプションを無効にした後、プロフィールページを確認して、Discourse ユーザー名フィールドが空になっているか確認してください。

Discourse のユーザー名は、すべてのユーザーで空白になっています。

WP Discourse の接続オプションタブに移動したとき、「Discourse に接続されています」というメッセージが表示されていますか?

接続オプションタブの API キーと投稿ユーザー名設定について、Discourse フォーラムの「全ユーザー」API キーを使用していますか?投稿ユーザー名は、サイトのシステムユーザー名に設定されていますか?システムユーザーのデフォルトユーザー名は ‘system’ です。

はい。接続オプションタブには「Discourse に接続されています」というメッセージが表示されています。

API キーは「all users」で、公開名は Discourse フォーラムの管理者です。ユーザー名はシステムユーザーの「system」ではありません。

ユーザー名を「system」(引用符なし)に変更して、違いが出るか試していただけませんか?

ユーザー名を system に変更しましたが、同じエラーメッセージが表示されます。

「Discourse への投稿中にエラーが発生しました。」

エラーメールに表示されている詳細は以下の通りです:

失敗の原因:
Discourse から 403 応答コードが返されました。
アクセス禁止

以下の点を確認してください:

  • 投稿者が Discourse のユーザー名を正しく設定していること

これを解決するための他のアイデアはありますか?

考えられるのは、新しい API キーを作成して、すべてを再入力することだけです。

はい、とても奇妙ですね…DiscourseをNodeChefでホストしているのですが、ビルドやサーバー設定に問題があるのでしょうか?ご意見をお聞かせください。

キーを変更してみましたが、同じ問題が解決しません。

ホスティングの詳細をありがとうございます。それについて尋ねるべきでした。問題が彼らのホスティングに関連している可能性はあります。これは、当社のホスティングや https://www.communiteq.com/ でホストされているサイト、またはセルフホストされたサイトで遭遇した問題ではありません。

WordPress サイトで WP-CLI が利用可能な場合、これをデバッグする最も簡単な方法は、WP Discourse 設定で使用しているのと同じ認証情報を使って、wp コンソールから Discourse のトピックを作成してみることです。そのリクエストへのレスポンスから、問題の詳細がわかるはずです。

わかりました。試してみます。

AWS アカウントでセルフホスト構成を設定しようかと考えていました。それで同じ問題が発生するかどうか試してみます。お手伝いいただき、ありがとうございます。

なぜか、公開時に 403 エラーが発生して失敗します。何をしても変わりません。

失敗の理由:
Discourse から 403 応答コードが返されました。
アクセス禁止

以下の点を確認してください:

  • 投稿者が正しく Discourse のユーザー名を設定しているか

[接続] タブには「Discourse に接続済み」と表示されています。[公開] 設定で「Discourse の名前フィールドを表示しない」は無効化されています。
接続を確認するため、すでに新しい API キーを再作成しました。システムユーザーのデフォルトユーザー名は「system」です。

どうすればよいのか見当がつかない状況です。

ご支援いただけますと幸いです。