해결책을 찾지 못해 고군분투하고 있는데, 혹시 여기에서 통찰을 얻을 수 있기를 바랍니다. 최근 새로운 프로젝트에 합류하여 기존 개발자의 일을 인수했습니다. 몇 달간 업데이트가 밀려 있던 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로 대체했습니다:
이를 위해 사용자 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 키를 사용했다면 이 방법은 올바르게 작동합니다.