Come disconnettere l'utente tramite API

Mentre sto cercando di disconnettere l’utente tramite API, ma senza successo,

ho letto SSO Logout via Master API Key isn't working - #2 by simon

Il mio httpclient ha impostato nome utente e chiave API nelle intestazioni, e funziona per altre operazioni ad es. post get user by external id o altro.

Devo inviare anche api-key e api-username nel corpo.

I miei utenti sono connessi tramite sso, quando disconnetto un utente dalla pagina admin su discourse funziona.

Ecco una parte del codice su come sto cercando di chiamarlo

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 risposta restituisce il codice 200 ma il contenuto è una pagina web, non {Succes: “OK” }

Mi scuso per aver aperto un argomento.

Il problema era che la mia configurazione di sviluppo puntava all’istanza http e non https di Discourse.

Quando sono passato all’endpoint https, ha iniziato a funzionare.

Mi sono confuso perché alcuni endpoint API funzionavano tramite http ma questo no.

Per i futuri lettori, ecco come disconnettere gli utenti tramite 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 Mi Piace