非プライベートカテゴリの最新/上位メッセージをすべて取得する方法は?

私の状況は以下の通りです。Discourse を SSO で利用しています。メインサイトのメンバーは、まだフォーラムを訪れたことがない場合もありますが、最新の話題やホットなトピックを表示して、クリックして見逃しているものを確認するよう促したいと考えています。

ただし、初めてフォーラムにアクセスするまで、そのユーザーには Discourse のプロフィールが存在しません(SSO の仕組み上、プロフィールは初回ログイン時に作成されます)。

これにより問題が発生します。Discourse に最新のアクティビティを要求すると、有効なユーザーを指定する必要がありますが、この場合は存在しません。また、プライベートカテゴリ(グループによって保護されている)に含まれるトピックがリストに含まれてしまうことになります。

現在、私は除外すべきカテゴリのハードコードされたリストを持ち、そのリストを順にチェックして、それらのカテゴリに属するトピックを除外するという方法で対応しています。しかし、これは理想的ではありません。さらに、ピン留めされたトピック(「新しいフォーラムへようこそ」など)が常にリストの上位に表示されてしまいます。これも除外することは可能ですが、全体として非常にハック的なアプローチに感じられます。:slight_smile:

よりエレガントな方法で、私が目指していることを達成するための提案はありますか?

フィード(latest.rss/top.rss)にフォールバックすることは可能ですか?

それは面白いアイデアですが、私のフォーラムが完全に非公開なので、私にはうまくいかないと思います。Discourse のセッションが有効な状態で RSS フィードを取得しようとすると、ログインページにリダイレクトされてしまいます。

次に、最小限のアクセス権を持つダミーユーザーを作成し、そのユーザーのビューをフォールバックとして使用しますか?

特別なグループへの所属を持たない新規ユーザーを作成し、この権限のないユーザーを使用して最新の API リクエストを実行してください。

ふむ、悪くないね。まだ少しハック的だけど、今のやり方よりはマシだと思う。「ファントム基本ユーザー」を維持しておけば、少なくともメインサイトのコードでDiscourseのカテゴリIDのリストを手動で管理する必要がなくなるから。