Discourse_api URLが見つかりませんエラー

みなさん、こんにちは。

discourse_api gem を使おうとしているのですが、

client = DiscourseApi::Client.new("https://<mysite>.com")
client.api_key = "<my global key>"
client.api_username = "system"

という基本的な設定をした後、

client.latest_topics

は正しくデータを返すのですが、

client.get_dashboard_stats

を実行すると、URL の「not_found」エラーが返ってきます。ルートにキーが必要な場合に何かが失敗しているのだと思いますが、client.latest_topics は動作しているため、理由がわかりません。

キーが正しいことを二度確認しましたし、新しいキーを作成して試してみても同じ結果です。グローバルアクセスオプションもチェック済みです。URL も正しいはずです。他に確認すべきことはありますか?:slight_smile:

よろしくお願いいたします。

これはおそらく API キー認証の問題です。

ご自身のサイトにログインしていない状態で新しいシークレットブラウザウィンドウを開き、https://yoursite/admin/dashboard.json というルートにアクセスすると、以下が返されます。

{"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}

一方、サイトにログインした状態で同じ URL にアクセスすると、JSON 結果が表示されるはずです。

もう一点確認すべきことは、API キーが「すべてのユーザー」向けか「単一のユーザー」向けに設定されているかです。「単一のユーザー」に設定されている場合は、API リクエストを行うユーザーと一致しているか確認してください。

とはいえ、API gem 内の 2 つのダッシュボードエンドポイントの更新が必要と思われます。get_dashboard_stats はまだ機能していますが、以前ほど多くの情報を返さず、get_dashboard_stats_totals の更新が必要そうです。

キーに関連する問題だとは私も思います。しかし、「すべてのユーザー」および「単一ユーザー」の設定(管理者ユーザー名を使用)を試しても、あなたが投稿した「not found」エラーが引き続き発生します。

キーも URL も正しいです。また、API 例に記載されている他のエンドポイントも含め、すべての設定を試しましたが、すべて「The requested URL or resource could not be found」というエラーが返ってきます。他に考えられる対処法が思いつきません :smiley: :sweat_smile: グローバルキーの場合、ユーザーのスコープは適用されないのでしょうか?

このコマンドを実行して、使用している discourse_api gem のバージョンを確認できますか?

gem list discourse_api

0.10.0 - おそらくそれが理由でしょう。HTTP ヘッダーの代わりに URL パラメータを使用しようとしています :slight_smile: ありがとうございます!