Файл '/admin/users/{id}/log_out.json' не работает

Я пытаюсь написать пример кода для выхода из системы.

Мой DNS сайта — ‘aaa.com’, а ID пользователя — ‘1’.
Я создал URL и отправил запрос следующим образом:
-post AAA Sorry Page
Также я отправил заголовки с api-key и api-Username.
Но получил ответ: «Упс! Страница не существует или является приватной».

Я также пробовал использовать ‘CURL’ следующим образом:
Но получил тот же результат. (Упс! Страница не существует или является приватной~~~)

curl -X POST " AAA Sorry Page "
-H “Content-Type: multipart/form-data;”
-H “Api-Key: secretStringTemp”
-H “Api-Username: system”
-F “id=1” \

Не могли бы вы помочь и подсказать, где я ошибаюсь?

Привет,
У меня та же проблема. Вы уже что-то добились в этом вопросе?
С уважением

Я всё ещё могу выходить из аккаунтов пользователей через 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-запросе?

Я в тупике!

Мне не удается разлогинить пользователя через API-эндпоинт /admin/users/{USER_ID}/log_out.json.

Я успешно получаю USER_ID из Discourse с помощью следующего запроса: /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 без особых проблем. Буду благодарен за любую информацию о том, почему выход из системы может не работать.

С уважением.

На первый взгляд всё выглядит нормально :thinking:. Содержит ли UserID корректное значение?

Да, в тестовом случае это 1 (получено из вызова /u/by-external/${user.id}.json). Также пробовал зафиксировать значение вручную, просто чтобы перепроверить… тот же результат.

Я перенёс сообщения из другой темы сюда, чтобы обсуждение было в одном месте. :+1:

Извините, если это немного выбивается из общего контекста. :slight_smile:

Один из способов воспроизвести сообщение об ошибке 404 — использовать неверный user-id. Можете ли вы сначала проверить, что получение пользователя по 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",
...

Хорошо, я подтвердил, что получаю корректный user_id из Discourse, в данном случае — 1…

{
  "id":1,
  "username":"Sean",
...
}

Интересно, что при отправке cURL-запроса к конечной точке log_out для user id 1…

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 (я) должен быть разлогинен на форуме, но при проверке оказывается, что я не был разлогинен — это первая проблема.

Вторая проблема заключается в том, что отправка того же запроса с бэкенда моего приложения через axios (подробно описано выше) приводит к ошибке 404… очень странно.

Редактирование:
Первая проблема не является проблемой — cURL-запрос успешно разлогинивает меня — теперь нужно разобраться, почему POST-запрос через axios возвращает 404.

Отлично — тайна раскрыта :roll_eyes:

Оказывается, мой запрос axios был оформлен неправильно! Поскольку я не отправляю тело в POST-запросе, я должен был передать пустой объект вместе с запросом.

Спасибо за подсказку насчёт curl-запросов @blake — именно это в итоге помогло мне разобраться. :+1:

Привет, Шон,

Не мог бы ты поделиться кодом log_out.json, так как я работаю над похожим запросом?

Я попытался выйти из форума, используя API-запрос ‘admin/users/{user_id}/log_out.json’, но получил ошибку: «Упс! Страница не существует или является приватной». Я указал api_key и api-username в заголовках. Кто-нибудь сталкивался с такой же проблемой?

Вам понадобится ключ API администратора для этого конечного узла?

Я успешно вышел из системы с помощью API, отправив POST-запрос на /admin/users/1/log_out.json.

Пустое тело, заголовки, содержащие Api-Username администратора и Api-Key с глобальной областью действия или с точечной областью действия, где включена возможность выхода.

Да, я использовал ключ администратора API

Каким программным обеспечением или языком программирования вы осуществляли вызов API? Можете ли вы скопировать и вставить сюда свой код?