RESTapiでユーザーが投稿に「いいね!」できるようにするには?

皆さん、こんにちは。Discourse は初めてで、REST API を使用して、あらゆるレベルのユーザーが投稿に「いいね!」できるようにするオプションを見つけるために、すべてのサイト設定 (/admin/site_settings) セクションを確認しました。

現在、すべてのユーザーは(公開なしで)トピックを作成したり、返信を追加したりできます。しかし、通常のユーザー(tl0、tl1 など)は、API を介して投稿に「いいね!」することはできません(ただし、Web パネルを使用すると「いいね!」できます)。

以下は私のカテゴリ設定です。

API を介して「いいね!」を追加するために、次のコードを使用しています。

  public async likeOrThrow(contentId: number, username: string) {
    try {
      this.overrideUsername(username);
      const res = await this.client.post(`post_actions.json`, {
        id: contentId,
        post_action_type_id: 2,
        flag_topic: false,
      });
      return res.data;
    } catch (error) {
      throw this.getException(error);
    } finally {
      this.resetUsername();
    }
  }

これは次のようにスローされます。

You are not permitted to view the requested resource.

しかし、ユーザーとして Discourse にログインすると、そのユーザーは「いいね!」を行うことができます。

これまでのところ、同じ API キー、同じカテゴリ、同じユーザー名で、トピック作成、投稿作成、ブックマーク API を統合しており、それらは権限の問題なく機能しています。

ここで何が間違っているのか教えていただけますか?追加情報が必要な場合はお知らせください。

ありがとうございます。

「いいね!」 1

以下が必要になると思います。

わかりませんが、everyone のみを使用してカテゴリ設定を簡単にすることができます。

「いいね!」 2

こんにちは、@Bas コメントありがとうございます。

しかし、なぜ like だけなのでしょうか? 私はすでに Discourse API を使用して、グローバルキー(ユーザーレベル:全ユーザー、スコープ:グローバル)で投稿作成、返信作成、ブックマークの追加・削除を実装しました。

新しいグローバル API キーを試しましたが、やはり同じエラーが発生します :frowning:

API キーがグローバルスコープで全ユーザーに有効な場合、以下の API は機能するはずですよね?

はい、このコードも問題ないように見えます。

contentId はどのように / 何に設定されていますか? 正しい Post.id ですか?

こんにちは @RGJ

contentId は投稿 ID で、正しい投稿 ID です。

以下のコードで、ログが出力されます。

      this.client.interceptors.request.use((config) => {
        Logger.log(`Request to ${config.url}`);
        Logger.log(`Headers: ${JSON.stringify(config.headers, null, 2)}`);
        Logger.log(`Body: ${JSON.stringify(config.data, null, 2)}`);
        return config;
      })

ログ:

[Nest] 97134  - 12/02/2024, 4:10:29 PM     LOG Request to post_actions.json
[Nest] 97134  - 12/02/2024, 4:10:29 PM     LOG Headers: {
  "Accept": "application/json, text/plain, */*",
  "Api-Username": "m...91",
  "Api-Key": "66dc....18b56fbc17bcf"
}
[Nest] 97134  - 12/02/2024, 4:10:29 PM     LOG Body: {
  "id": 84,
  "post_action_type_id": 2,
  "flag_topic": false
}

おっと、問題を見つけたようです。:grimacing:

テスト中に、別のユーザーの投稿(テストしていたものと同じタイトル)を誤って選択したところ、成功しました。

しかし、自分のシステムを使用してテストしたところ、自分の投稿に「いいね!」を追加しようとしていました。

ご迷惑をおかけしました。自分の投稿に「いいね!」を付けられないことに気づきませんでした。

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

「いいね!」 3

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.