Olá! Estou adorando usar a API do Discourse!
Seguindo o guia sobre engenharia reversa da API, encontrei um problema ao tentar fazer a API enviar um link de login.
Contexto do motivo pelo qual estou fazendo isso
Criei um serviço de SSO para um hackerspace local, para que os usuários possam fazer login no nosso Discourse usando o sistema de associação do hackerspace.
No entanto, algumas pessoas podem ter usado um endereço de e-mail diferente no sistema de associação em comparação ao do Discourse. Como o login local está desativado quando o SSO está habilitado, gostaria que as pessoas pudessem clicar em “Envie-me um link de login” para serem autenticadas e, em seguida, atualizarem seu endereço de e-mail, se desejarem (ou continuarem usando o link de login, o que preferirem).
Objetivo
Gostaria de enviar um link de login para o usuário @ domain .co.uk via API.
Tentei o seguinte:
curl -X POST "https://discourse.<site>.org.uk/u/email-login" --data "{\"login\":\"user%40domain.co.uk\"}" -H "Api-Key: xxxxx" -H "Api-Username: system" -H "Content-Type: application/json"
O que recebo de volta é:
<html><body>Você está sendo <a href="https://discourse.<site>.org.uk/">redirecionado</a>.</body></html>
Se eu não incluir a chave de API, recebo [BAD CSRF].
Então, onde estou travado é: como posso fazer o Discourse enviar um link de login para o usuário @ domain .co.uk via API?
Muito obrigado por qualquer ajuda. Vou continuar tentando coisas para ver o que funciona.
P.S. Gostaria de não precisar usar uma “gambiarra” como:
Fazer uma solicitação a /session/csrf e salvar o token CSRF.
Em seguida, fazer uma solicitação a /u/email-login com o token CSRF.
É possível fazer isso apenas com uma chave de API?
Obrigado!
![]()