Ciao! Sto davvero apprezzando l’utilizzo della API di Discourse!
Seguendo la guida sul reverse engineering della API, ho riscontrato un problema nel far sì che la API invii un link di accesso.
Contesto del perché sto facendo questo
Ho creato un servizio SSO per un hackerspace locale, in modo che gli utenti possano accedere al nostro Discourse tramite il sistema di gestione delle iscrizioni dell’hackerspace.
Tuttavia, alcune persone potrebbero aver utilizzato un indirizzo email diverso nel sistema di iscrizioni rispetto a quello usato su Discourse. Poiché l’accesso locale è disabilitato quando SSO è attivo, vorrei che gli utenti potessero cliccare su “Inviami un link di accesso via email” per accedere e poi aggiornare il proprio indirizzo email se lo desiderano (oppure continuare a usare il link di accesso, come preferiscono).
Obiettivo
Vorrei inviare un link di accesso all’utente @ domain .co.uk tramite la API.
Ho provato questo:
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"
La risposta che ricevo è:
<html><body>Stai venendo <a href="https://discourse.<site>.org.uk/">reindirizzato</a>.</body></html>
Se non includo la chiave API, ricevo [BAD CSRF].
Quindi, il problema su cui sono bloccato è: come posso far sì che Discourse invii un link di accesso via email all’utente @ domain .co.uk tramite la API?
Grazie mille per qualsiasi aiuto. Continuerò a provare diverse soluzioni per vedere cosa funziona.
P.S. Preferirei non dover ricorrere a un workaround del tipo:
Effettuare una richiesta a /session/csrf e salvare il token CSRF,
poi effettuare una richiesta a /u/email-login con il token CSRF.
È possibile farlo utilizzando solo una chiave API?
Grazie!
![]()