みなさん、こんにちは。
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 も正しいはずです。他に確認すべきことはありますか?
よろしくお願いいたします。
blake
(Blake Erickson)
2020 年 10 月 23 日午後 2:13
2
これはおそらく 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」というエラーが返ってきます。他に考えられる対処法が思いつきません グローバルキーの場合、ユーザーのスコープは適用されないのでしょうか?
blake
(Blake Erickson)
2020 年 10 月 23 日午後 10:11
4
このコマンドを実行して、使用している discourse_api gem のバージョンを確認できますか?
gem list discourse_api
0.10.0 - おそらくそれが理由でしょう。HTTP ヘッダーの代わりに URL パラメータを使用しようとしています ありがとうございます!