Bonjour ! J’apprécie vraiment l’utilisation de l’API Discourse !
En suivant le guide sur le reverse engineering de l’API, je rencontre un problème pour obtenir l’envoi d’un lien de connexion via l’API.
Contexte de mon projet
J’ai créé un service SSO pour un hackerspace local afin que les utilisateurs puissent se connecter à notre instance Discourse via le système d’adhésion du hackerspace.
Cependant, certaines personnes ont peut-être utilisé une adresse e-mail différente dans le système d’adhésion par rapport à celle de Discourse. Comme la connexion locale est désactivée lorsque SSO est activé, je souhaite que les utilisateurs puissent cliquer sur « Envoyez-moi un lien de connexion par e-mail » pour se connecter, puis mettre à jour leur adresse e-mail s’ils le souhaitent (ou continuer à utiliser le lien de connexion, peu importe).
Objectif
Je souhaite envoyer un lien de connexion à l’utilisateur @domaine.co.uk via l’API.
J’ai essayé ceci :
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"
Ce que je reçois en retour est :
<html><body>Vous êtes en train d'être <a href="https://discourse.<site>.org.uk/">redirigé</a>.</body></html>
Si je n’inclus pas la clé API, je reçois [BAD CSRF].
Donc, ce sur quoi je suis bloqué, c’est : comment puis-je simplement demander à Discourse d’envoyer un lien de connexion par e-mail à l’utilisateur @domaine.co.uk via l’API ?
Merci beaucoup pour toute aide. Je vais continuer à essayer différentes choses pour voir ce qui fonctionne.
P.S. Je ne voudrais pas avoir à utiliser une astuce comme :
Faire une requête vers /session/csrf et sauvegarder le jeton CSRF,
Puis faire une requête vers /u/email-login avec le jeton CSRF.
Est-il possible de faire cela uniquement avec une clé API ?
Merci !
![]()