Cómo cerrar sesión de usuario por API

Mientras intento cerrar la sesión del usuario por API, pero sin éxito.

Leí SSO Logout via Master API Key isn't working - #2 by simon

Mi cliente http tiene el nombre de usuario y la clave de API configurados en las cabeceras, y funciona para otras cosas, por ejemplo, publicar, obtener usuario por ID externo u otros.

¿Necesito enviar también la clave de API y el nombre de usuario de la API en el cuerpo?

Mis usuarios inician sesión mediante SSO, cuando cierro la sesión del usuario desde la página de administración en Discourse, funciona.

Aquí hay una parte del código de cómo intento llamarlo:

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();

La respuesta devuelve un código 200 pero el contenido es una página web, no {Succes: “OK” }

Mis disculpas por abrir el tema.

El problema era que mi configuración de desarrollo apuntaba a una instancia http en lugar de https de discourse.

Cuando cambié al endpoint https, comenzó a funcionar.

Me confundí porque algunos endpoints de la API funcionaban sobre http, pero este no.

Para futuros lectores, aquí les explico cómo cerrar sesión de usuarios con 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);
2 Me gusta