Nous utilisons l’API pour intégrer Discourse sur notre site (via pydiscourse).
Lorsqu’il est temps d’ajouter un utilisateur à un groupe Discourse via l’API, pydiscourse utilise la méthode PUT vers l’URL de l’API Discourse :
/admin/groups/{group_id}/members.json
…et transmet le nom d’utilisateur via la variable ‘usernames’.
Si le nom d’utilisateur contient un “.” , il n’y a pas de problème, sauf si ce “.” apparaît comme dernier caractère, auquel cas l’API renverra une erreur avec le message :
Vous avez fourni des paramètres invalides à la requête : usernames
Un nom d’utilisateur ne peut pas se terminer par un point, c’est donc la réponse attendue. J’allais vérifier la source, mais vous pouvez essayer de créer un compte ici avec un point final et c’est illégal.
Merci pour votre réponse rapide, Jay. Savez-vous de mémoire si l’e-mail de l’utilisateur peut être envoyé pour le « nom d’utilisateur » dans ce point de terminaison d’API, de telle sorte que Discourse sache qu’il doit rechercher l’utilisateur par e-mail ? (Nous utilisons le SSO pour connecter notre application Django à Discourse, donc Discourse devrait avoir les deux identifiants pour chaque utilisateur)
Oh ! Oui, je le sais. J’ai remarqué l’autre jour que vous pouvez utiliser l’adresse e-mail pour le point de terminaison qui ajoute un utilisateur à un groupe. Il se peut cependant que ce soit la route non administrative. Incluez simplement l’e-mail comme nom de champ avec l’adresse.
Si vous utilisez Discourse connect, cependant, vous pouvez avoir les groupes gérés à la connexion, ce qui est probablement ce que vous voulez faire plutôt que de vous embêter avec l’API.
Nous utilisons Discourse Connect, mais nous utilisons également l’API.
Au fait, vous avez mentionné Il se peut que ce soit la route non-admin, cependant
Donc, cette requête PUT serait :
/groups/{group_id}/members.json
… avec 'email': (email de l'utilisateur) comme charge utile… et Discourse sait simplement que mon utilisateur a les droits d’administrateur pour pouvoir ajouter cet utilisateur à ce groupe ?
(… désolé, je ne suis pas très clair sur la raison pour laquelle il existe deux routes pour cette même opération…)
Je pense que oui. J’ai utilisé Comment faire de l’ingénierie inverse de l’API Discourse pour trouver le chemin. Et ensuite, je suppose, j’ai regardé le code source pour voir que l’ID utilisateur et l’adresse e-mail fonctionnaient aussi.
Oui, le SSO ne met à jour les groupes qu’à la connexion, donc l’API est votre solution.