DiscourseAPI Gem으로 사용자 API 키 생성 시 404 오류 발생

안녕하세요,

해결책을 찾지 못해 고군분투하고 있는데, 혹시 여기에서 통찰을 얻을 수 있기를 바랍니다. 최근 새로운 프로젝트에 합류하여 기존 개발자의 일을 인수했습니다. 몇 달간 업데이트가 밀려 있던 Discourse 빌드를 최신 버전으로 업그레이드했는데, 그 외 모든 기능과 API 호출은 정상적으로 작동하고 있습니다.

제가 하려는 작업은 Discourse 외부인 저희 웹사이트에서 API를 사용하여 Discourse에 토픽을 생성하는 것입니다. 사용자 ID를 받아 DiscourseAPI의 by_external_id 메서드를 사용하여 Discourse에서 해당 사용자를 찾습니다. 이렇게 하면 Discourse에서 해당 사용자의 ID를 전달하는 generate_user_api_key(discourse_user[‘id’])를 호출합니다.

그러나 업그레이드 이후에만 DiscourseApi::NotFoundError / 404 오류가 반환됩니다.

도움이나 조언을 주시면 감사하겠습니다!

API 키 생성 라우트가 변경되었지만, API 키 생성에 사용되는 Discourse API gem의 메서드는 여전히 이전 라우트를 호출하고 있습니다. 이것이 404 오류가 발생하는 이유입니다.

이 문제를 수정할 예정입니다. 현재로서는 사용자를 위한 API 키를 생성하려면 http://localhost:3000/admin/api/keys"에 POST 요청을 보내면 됩니다. 다음은 CURL 요청 예시입니다. 예시에서 실제 API 키는 $api_key로 대체했습니다:

curl -X POST "http://localhost:3000/admin/api/keys" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-F "key[description]=a key for bobby" \
-F "key[username]=bobby"

이를 위해 사용자 API 키를 생성할 필요가 없습니다. 대신 게시물을 게시할 때 사용할 사용자를 client.api_username으로 설정하면 됩니다:

client.api_username = "susan"
client.create_topic(category: 5, title: "Susan's really awesome API topic", skip_validation: true, raw: "this is a test, this is only a test")

client.api_username = "bobby"
client.create_topic(category: 5, title: "Bobby's really awesome API topic", skip_validation: true, raw: "this is a test, this is only a test")

client를 생성할 때 All Users API 키를 사용했다면 이 방법은 올바르게 작동합니다.

감사합니다!

각 사용자를 위해 키를 생성하는 대신 “All Users” 키를 사용하도록 코드를 업데이트하고, 사용자의 사용자 이름을 api_username으로 전달하도록 수정하니 문제가 해결되었습니다.