この問題の解決策を見つけるのに苦労しており、ここにいる誰かが何かヒントを持っていることを願っています。最近、新しいプロジェクトに参加し、以前の開発者に代わって作業を引き継ぎました。Discourse のビルドを最新バージョンにアップグレードしたところ、数ヶ月遅れでしたが、他のすべての機能や API 呼び出しは期待通りに動作しています。
私が行おうとしているのは、Discourse 外の当社のウェブサイトから API を使用して Discourse にトピックを作成することです。ユーザーの ID を取得し、DiscourseAPI の by_external_id メソッドを使用して Discourse 内の該当ユーザーを検索します。その後、generate_user_api_key(discourse_user['id']) を呼び出し、Discourse 上のユーザー ID を渡します。
API キーを生成するためのルートが変更されましたが、Discourse API gem で使用されている API キー生成メソッドは依然として古いルートを呼び出しています。そのため、404 エラーが発生しています。
これは修正する予定です。当面の間、ユーザーの API キーを生成したい場合は、http://localhost:3000/admin/api/keys に対して POST リクエストを送信することで生成できます。以下に CURL リクエストの例を示します。実際の API キーは例では $api_key に置き換えています。
この場合、ユーザーの API キーを生成する必要はありません。代わりに、投稿を公開したいユーザー名を client.api_username に設定してください。
client.api_username = "susan"
client.create_topic(category: 5, title: "Susan's really awesome API topic", skip_validation: true, raw: "this is a test, this is only a test")
client.api_username = "bobby"
client.create_topic(category: 5, title: "Bobby's really awesome API topic", skip_validation: true, raw: "this is a test, this is only a test")
client を作成する際に「すべてのユーザー」の API キーを使用していれば、これは正しく機能します。