Wie man Benutzer per API abmeldet

Ich versuche, einen Benutzer per API abzumelden, aber ohne Erfolg.

Ich habe SSO Logout via Master API Key isn't working - #2 by simon gelesen.

Mein httpclient hat Benutzername und API-Schlüssel in den Headern gesetzt, und es funktioniert für andere Dinge, z. B. Post-Abruf von Benutzern nach externer ID oder andere.

Muss ich api-key und api-username auch im Body senden?

Meine Benutzer sind per SSO angemeldet. Wenn ich einen Benutzer über die Admin-Seite in Discourse abmelde, funktioniert es.

Hier ist ein Teil des Codes, wie ich versuche, ihn aufzurufen:

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

Die Antwort gibt den Code 200 zurück, aber der Inhalt ist eine Webseite, kein {Succes: “OK” }.

Entschuldigen Sie, dass ich ein Thema eröffnet habe.

Das Problem war, dass mein Entwicklungs-Setup auf eine HTTP-Instanz von Discourse zeigte und nicht auf HTTPS.

Als ich auf den HTTPS-Endpunkt umgeschaltet habe, funktionierte es.

Ich war verwirrt, weil einige API-Endpunkte über HTTP funktionierten, dieser aber nicht.

Für zukünftige Leser, hier ist, wie ich Benutzer mit C# abmelde:

             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 „Gefällt mir“