API로 사용자 로그아웃하는 방법

API를 통해 사용자를 로그아웃시키려 하고 있지만, 성공하지 못하고 있습니다.

SSO Logout via Master API Key isn't working - #2 by simon 이 글을 읽었습니다.

제 httpclient에는 헤더에 사용자 이름과 API 키가 설정되어 있으며, 외부 ID로 사용자 가져오기 등 다른 기능에서는 정상적으로 작동합니다.

API 키와 API 사용자 이름을 본문(body)에도 보내야 하나요?

제 사용자들은 SSO로 로그인되어 있으며, Discourse 관리 페이지에서 사용자를 로그아웃시키면 정상적으로 작동합니다.

다음은 호출 방식을 보여주는 코드 일부입니다.

var formData = new FormUrlEncodedContent(new
{
new KeyValuePair<string, string>(“username_or_email”, user.user.username)
});
var response = await _httpClient.PostAsync($“/admin/users/{user.user.id}/log_out”, formData);
var content = await response.Content.ReadAsStringAsync();

응답은 200 코드를 반환하지만, 콘텐츠가 {Succes: “OK” }가 아니라 웹 페이지입니다.

주제를 열게 되어 죄송합니다.

문제는 제 개발 환경이 Discourse의 http 인스턴스를 https 인스턴스로 잘못 가리키고 있었던 것이었습니다.

https 엔드포인트로 전환하자 작동하기 시작했습니다.

일부 API 엔드포인트는 http로 작동하는데 이 엔드포인트만 작동하지 않아서 혼란스러웠습니다.

미래의 독자들을 위해 C#으로 사용자를 로그아웃하는 방법을 공유합니다.

             var url = $"/admin/users/{user.user.id}/log_out";
            using var formData = new MultipartFormDataContent{
{ new StringContent(_forumConfigModel.ApiKey), “api_key” },
{ new StringContent(_forumConfigModel.User), “api_username” }
};

var response = await _httpClient.PostAsync(url, formData);