bymong
(bymong)
2022 年 3 月 17 日午前 3:19
1
ログアウトのサンプルコードを作成しようとしています。
私のサイトのDNSは「aaa.com 」で、ユーザーIDは「1」です。
URLを作成して、次のようにリクエストを送信しました。
post AAA Sorry Page
また、api-key、api-Usernameとともにヘッダーを送信しました。
しかし、「Oops! That page doesn’t exist or is private.」という応答を受け取りました。
「CURL」で試してみましたが、次のような結果になりました。しかし、同じ結果になりました。(Oops! That page doesn’t exist or is private~~~ )
curl -X POST " AAA Sorry Page "
-H “Content-Type: multipart/form-data;”
-H “Api-Key: secretStringTemp”
-H “Api-Username: system”
-F “id=1” \
何が間違っているのか教えていただけますか?
seanc
(Sean)
2023 年 4 月 17 日午後 2:22
2
こんにちは。
私も同じ問題が発生しています。何か解決しましたか?
よろしくお願いします。
「いいね!」 1
blake
(Blake Erickson)
2023 年 4 月 17 日午後 2:37
3
API経由でユーザーをログアウトさせることがまだ可能です。使用したcurlコマンドは以下のとおりです。
curl -i -sS -X POST "http://localhost:4200/admin/users/1/log_out.json" \
-H "Content-Type: multipart/form-data" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893" \
-H "Api-Username: blake.erickson"
HTTP/1.1 200 OK
{"success":"OK"}
それでも問題が解決しない場合は、APIリクエストに関する詳細情報を提供していただけますか?
「いいね!」 1
seanc
(Sean)
2023 年 4 月 17 日午後 2:15
4
お手上げです!
API エンドポイント /admin/users/{USER_ID}/log_out.json を使用してユーザーをログアウトできません。
以下の方法で、Discourse の USER_ID を正常に取得できています。/u/by-external/${user.id}.json。
他の API エンドポイントにアクセスしてデータを取得することもできているので、API キーやリクエストの仕組みには満足しています。
しかし、POST リクエストを送信しようとすると…
await axios.post(`${process.env.FORUM_URL}/admin/users/${UserID}/log_out.json`,{
headers: {
'Api-Key': process.env.DISCOURSE_API_KEY,
'Api-Username': process.env.DISCOURSE_API_USERNAME,
},
});
…ステータス 404 と以下の返却オブジェクトが表示されます。
{
errors: [ 'The requested URL or resource could not be found.' ],
error_type: 'not_found'
}
SSO はあまり問題なく実装できました。ログアウトが機能しない理由について、何か洞察があれば幸いです。
よろしくお願いします。
一見問題なさそうですね 。UserID には適切な値が入っていますか?
seanc
(Sean)
2023 年 4 月 17 日午後 2:37
6
はい、テストケースでは1です(/u/by-external/${user.id}.jsonへの呼び出しから取得)。値をハードコーディングして確認しましたが、結果は同じでした。
他のトピックからの投稿をここに移動しました。議論をまとめます。
少し同期がずれていたらごめんなさい。
「いいね!」 3
blake
(Blake Erickson)
2023 年 4 月 17 日午後 3:03
9
無効なユーザーIDを使用すると、404エラーメッセージを再現できます。最初にIDでユーザーを取得できるか確認していただけますか?
curl -i -sSL -X GET "http://localhost:4200/admin/users/1.json" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893" \
-H "Api-Username: blake.erickson"
HTTP/1.1 200 OK
{
"id": 1,
"username": "blake.erickson",
...
「いいね!」 1
seanc
(Sean)
2023 年 4 月 17 日午後 3:29
10
はい、Discourse から有効な user_id を取得していることを確認しました。この場合、1 です…
{
"id":1,
"username":"Sean",
...
}
興味深いことに、ユーザー ID 1 に対して log_out エンドポイントに cURL リクエストを送信すると…
curl -i -sS -X POST https://community.site.com/admin/users/1/log_out.json
-H "Content-Type: multipart/form-data"
-H "Api-Key: my-api-key"
-H "Api-Username: Sean"
…200 の応答が得られます。これは、ユーザー 1 (私) がフォーラムからログアウトされるはずであることを示唆していますが、確認すると実際にはログアウトされていません。これが問題 1 です。
2 番目の問題は、同じリクエストをアプリのバックエンドから axios を使用して送信すると (上記で詳述)、404 が発生することです。非常に奇妙です。
編集:
問題 1 は問題ではありません。cURL リクエストは正常に私をログアウトさせています。axios POST リクエストが 404 を返す理由を現在調査中です。
「いいね!」 1
seanc
(Sean)
2023 年 4 月 17 日午後 4:01
11
謎が解けました
axiosリクエストのフォーマットが正しくなかったことが判明しました!POSTリクエストでボディを送信していないので、リクエストと一緒に空のオブジェクトを渡すべきでした。
curlリクエストに関するアドバイス、ありがとうございました @blake 。それが最終的に解決の糸口となりました。
「いいね!」 3
Sean様
log_out.jsonのコードを共有していただけますでしょうか。同様のリクエストに取り組んでいます。
フォーラムからログアウトするために POST API ‘admin/users/{user_id}/log_out.json’ を試しましたが、「おっと!そのページは存在しないか、プライベートです。」というエラーが返ってきました。
ヘッダーに api_key と api-username を指定しました。同じような問題に直面した方はいらっしゃいますか?
そのエンドポイントには管理者APIキーを使用する必要がありますか?
「いいね!」 1
Canapin
(Coin-coin le Canapin)
2023 年 9 月 6 日午前 10:34
16
APIを使用して /admin/users/1/log_out.json にPOSTリクエストを送信することで、正常にログアウトできました。
ボディは空で、ヘッダーには管理者Api-Usernameと、グローバルスコープまたはログアウト機能がチェックされたグラニュラースコープを持つApi-Keyを含めます。
「いいね!」 1
Canapin
(Coin-coin le Canapin)
2023 年 9 月 6 日午後 1:08
18
API呼び出しは、どのソフトウェアまたはプログラミング言語で行いましたか?コードをここにコピー&ペーストしていただけますか?