APIでユーザーをログオフする方法

ユーザーをAPI経由でログアウトしようとしていますが、成功しません。

SSO Logout via Master API Key isn't working - #2 by simon を読みました。

私のhttpclientは、ヘッダーにユーザー名とAPIキーを設定しており、外部IDによるユーザーの投稿や取得など、他の操作では機能します。

APIキーとAPIユーザー名を本文でも送信する必要がありますか?

私のユーザーは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” } ではなく、Webページです。

トピックを開いてしまい申し訳ありません。

問題は、開発環境が Discourse の HTTPS インスタンスではなく HTTP を指していたことでした。

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);
「いいね!」 2