Impossible d'ajouter un utilisateur via l'API

Bonjour !

Nous essayons d’ajouter un utilisateur via l’API avec la requête suivante :

POST https://discourse.example.de/users
{
    "name": "Bob Tester",
    "email": "example address",
    "password": "#######",
    "username": "testi",
    "active": true,
    "approved": false
}

Notre clé API et notre utilisateur sont définis dans l’en-tête de notre requête.

Cette requête donne la réponse suivante :

Status: 200 OK
{
    "success": true,
    "active": false,
    "message": "<p>Vous êtes presque terminé ! Nous avons envoyé un email d'activation à <b>example address</b>. Veuillez suivre les instructions dans l'email pour activer votre compte.</p><p>Si aucun email n'arrive, veuillez vérifier votre dossier spam.</p>"
}

Mais aucun utilisateur n’a été ajouté dans Discourse ?

Dans l’exemple de réponse de la documentation (Discourse API Docs), il y a un identifiant d’utilisateur.

Quelqu’un a-t-il une idée de la raison pour laquelle nous ne recevons pas d’identifiant d’utilisateur dans la réponse ?

Ce message dans la réponse :

correspond au message d’e-mail de confirmation :

ce qui signifie que l’utilisateur reçoit un e-mail de confirmation. Une fois qu’il clique dessus, son compte sera créé.

Utilisez-vous la dernière version de Discourse ? Si vous passez "active": true, un e-mail de confirmation ne devrait pas être envoyé. Voir Creating user via API - #11 by blake.

2 « J'aime »

Bonjour !

Merci pour votre réponse, mais cela ne résout pas mon problème.

Dans ma requête d’exemple, j’ai utilisé le paramètre “active”: true, mais dans la réponse, j’ai obtenu “active”: false. L’utilisateur ne peut donc pas être activé — peut-être parce qu’il n’a pas été créé ?

Indépendamment de cela :

Si je n’envoie pas le paramètre “active”: true dans ma requête, aucun e-mail n’est envoyé à l’utilisateur.

Avez-vous des idées ?

Merci !

Pourriez-vous nous indiquer quelle version de Discourse vous utilisez ? Cela nous aidera à voir si nous pouvons reproduire votre problème.

Bien sûr — nous utilisons la version 2.6.0.beta5.
Aucune mise à jour n’est disponible pour nous.

1 « J'aime »

Très bien, merci. Je voulais juste confirmer que vous n’étiez pas sur une ancienne version.

Je suis presque certain que vos identifiants ne sont pas correctement transmis lors de cette requête. Ce point de terminaison est un peu spécial car il est utilisé dans notre formulaire d’inscription et ne nécessite pas réellement d’identifiants API pour être utilisé. La réponse que vous obtenez correspond au cas où un utilisateur s’inscrit, mais nous détectons qu’il ne s’agit pas d’une requête API.

Pourriez-vous essayer de faire une autre requête API qui nécessite une authentification, comme la création d’une catégorie, et voir si cela fonctionne ? Vous pouvez également consulter la page de l’API administrateur et vérifier quand la clé a été utilisée pour la dernière fois, afin de voir si elle est utilisée correctement dans votre requête API de création d’utilisateur.

J’ai pu reproduire votre problème en effectuant une requête JSON sans identifiants :

Requête JSON sans identifiants

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -d "{\"name\": \"8525f374d470a2e3f22c\", \"active\": \"true\", \"username\": \"8525f374d470a2e3f22c\", \"email\": \"8525f374d470a2e3f22c@example.com\", \"password\": \"65d18e465472452771e02b3462260ea1\"}"

HTTP/1.1 200 OK

{"success":true,"active":false,"message":"\u003cp\u003eVous êtes presque prêt ! Nous avons envoyé un e-mail d'activation à \u003cb\u003e8525f374d470a2e3f22c@example.com\u003c/b\u003e. Veuillez suivre les instructions contenues dans l'e-mail pour activer votre compte.\u003c/p\u003e\u003cp\u003eSi vous ne le recevez pas, vérifiez votre dossier de spams.\u003c/p\u003e"}

vs

Requête JSON avec identifiants

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -H "Api-Key: 079fb2bb12d3b436bb11bde8eb58aaa9a36560fa7d79b14b3087aa40b1ebc2c4" -H "Api-Username: blake.erickson" -d "{\"name\": \"da4be85b6046f9c9b9e1\", \"active\": \"true\", \"username\": \"da4be85b6046f9c9b9e1\", \"email\": \"da4be85b6046f9c9b9e1@example.com\", \"password\": \"65d6f0589c5f234de4ad31662b3a17a2\"}"

HTTP/1.1 200 OK

{"success":true,"active":true,"message":"Votre compte est activé et prêt à être utilisé.","user_id":29}

1 « J'aime »

Ça a fonctionné — les identifiants n’ont pas été transmis correctement.

Merci beaucoup pour votre aide, un excellent support ! :slight_smile:

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.