J’ai trouvé quelques exemples sur ces forums pour mettre à jour les informations utilisateur via l’API mais je n’arrive pas à le faire fonctionner. Je suis un développeur junior, donc peut-être que je rate quelque chose d’évident.
D’abord, j’ai essayé de faire fonctionner cet exemple : curl -X PUT -d 'name=new name’ -L 'https://mysite.com/users/user12345.json?api_key=mykey\u0026api_username=username'
mais j’obtiens ["BAD CSRF"] alors j’ai essayé ceci :
Avez-vous essayé Reverse engineer the Discourse API pour vérifier ce qui se passe lorsque vous utilisez l’interface utilisateur pour effectuer la modification ?
Cela fonctionne pour moi lorsque j’envoie une requête PUT à par exemple /u/test_one.json
Merci @JammyDodger. J’ai fait ce que vous avez suggéré et mis à jour le nom dans l’interface d’administration, puis j’ai regardé dans l’onglet réseau. Comme vous l’avez mentionné, la mise à jour se fait à une URL différente (/u au lieu de /users), mais lorsque je change l’URL, cela ne fonctionne toujours pas.
Sous « Form Data », je regarde la requête et c’est : name: "newname" exactement comme je l’envoie.
Pour autant que je puisse en juger, tout semble correct et cela ne se met toujours pas à jour. Je suis bloqué.
Ok… J’ai passé beaucoup plus de temps à parcourir les forums et j’ai trouvé un problème similaire il y a 7 ans. Il s’avère que si vous mettez à jour le Content-Type en "application/json; charset=utf-8", cela fonctionne !
J’ai un dernier problème : comment puis-je mettre à jour le nom d’utilisateur via l’API ?
J’ai essayé de faire quelque chose comme ceci, mais ça ne fonctionne pas :
Ok… J’ai finalement réussi à comprendre. Je vais laisser un petit résumé ici au cas où quelqu’un à l’avenir chercherait comment faire cela. Les autres réponses que j’ai trouvées sur les forums étaient obsolètes.
Pour mettre à jour le nom via l’API : curl -X PUT -H \"Content-Type: application/json; charset=utf-8\" -H \"Api-Key: mykey\" -H \"Api-Username: username\" -d '{\"name\": “mynewname\"}' -L 'https://mysite.com/u/user12345.json'
Pour mettre à jour le nom d’utilisateur via l’API : curl -X PUT -H \"Content-Type: application/json; charset=utf-8\" -H \"Api-Key: myapikey\" -H \"Api-Username: username\" -d '{\"new_username\": \"mynewusername\"}' -L 'https://mysite.com/u/user12345/preferences/username.json'