안녕하세요. 저는 Discourse를 처음 사용하는 초보자인데, RESTapi를 통해 모든 레벨의 사용자가 게시물을 '좋아요’할 수 있도록 허용하는 옵션을 찾기 위해 All Site Settings(/admin/site_settings) 섹션을 확인해 보았습니다.
현재 모든 사용자(공개 설정과 무관하게)가 주제 생성, 답변 추가 등을 수행할 수 있습니다. 그러나 일반 사용자(tl0, tl1 등)는 웹 패널을 통해 '좋아요’를 누를 수는 있지만, API를 통해 '좋아요’를 누를 수 없습니다.
제 카테고리 설정은 다음과 같습니다.
다음과 같은 코드를 사용하여 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를 통합했으며, 권한 문제 없이 모두 정상적으로 작동합니다.
제가 어디를 잘못하고 있는지 파악하는 데 도움을 주실 수 있을까요? 추가 정보가 필요하시다면 알려주세요.
감사합니다.
Jagster
(Jakke Flemming)
3
모르겠지만, everyone만 사용하면 카테고리 설정을 더 쉽게 할 수 있습니다.
안녕하세요 @Bas, 댓글 감사합니다.
하지만 왜 like만 그런가요? 저는 이미 Discourse API를 사용하여 글로벌 키(사용자 수준: all-users, 범위: global)로 게시물 생성, 답글 생성, 북마크 추가 및 삭제를 구현했습니다.
새로운 글로벌 API 키도 만들어서 시도해 봤는데, 여전히 같은 오류가 발생합니다. 
API 키가 글로벌 범위를 가지고 모든 사용자에게 유효하다면, 다음 API가 작동해야 하지 않나요?
RGJ
(Richard - Communiteq)
5
네, 이 코드는 저도 괜찮은 것 같습니다.
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
}
아, 문제를 찾은 것 같습니다. 
웹 패널로 테스트할 때 실수로 다른 사용자의 게시글(테스트하던 글과 제목이 같은 글)을 선택했는데, 그건 성공했습니다.
하지만 제 시스템으로 테스트할 때는 제 자신의 게시글에 좋아요를 누르려고 했었네요.
불편을 드려 죄송합니다. 자신의 게시글에는 좋아요를 누를 수 없다는 점을 몰랐습니다.
감사드리고, 좋은 하루 보내세요.