Генерация email для входа через API

Я хочу инициировать отправку пользователю письма для входа без пароля через API (такого же, которое он получил бы, если бы нажал «Войти по электронной почте» самостоятельно), но, похоже, это невозможно. Я использовал технику «обратной инженерии API», чтобы попытаться найти решение, но аутентификация с помощью глобального ключа API просто возвращает главную страницу и ничего не запускает (а без ключа API, похоже, требуются куки сессии и т. д.).

Моя цель — максимально упростить процесс регистрации: поскольку пользователи регистрируются через другую систему, я создаю их в Discourse и хочу, чтобы они сразу получали письмо со временной ссылкой для входа. Всё это направлено на снижение трения в процессе, который и так довольно утомителен!

Есть ли какой-то трюк, чтобы заставить это работать через API?

В данном случае правильным решением будет настройка невидимого входа с использованием DiscourseConnect.

Попробовали ли вы:

curl -X POST https://meta.discourse.org/u/email-login \
-H "Api-Key: longapikeyhere" \
-H "Api-Username: system" \
--data-raw 'login=email%40gmail.com'

?

Большое спасибо за ответ, Falco. При использовании curl точно так, как вы предложили, я получаю ответ «Вы перенаправляетесь», который возвращает меня на главную страницу. Запрос на ввод email для входа не появляется. Я получал аналогичный результат с инструментом, который использовал, — он также следовал перенаправлению обратно на главную страницу.

Я не хочу использовать DiscourseConnect, поскольку единственный требуемый вход после регистрации предназначен только для Discourse.

Также хочу добавить, что, будучи давним пользователем (и поклонником) форумов Discourse, это мой первый опыт работы с другой стороны — и API / вебхуки просто отличные: с ними очень легко работать, и они обладают большой мощностью.

Эта конечная точка в данный момент действительно недоступна для вызовов через API. При передаче API-ключей для неё вы попадаете на перенаправление здесь:

А без API-ключей вызвать её нельзя, так как этот маршрут защищён от CSRF с помощью :verify_authenticity_token.

Спасибо — всё понятно, и я вижу логику. Очень благодарен за ответы.