Besoin d'aide pour mettre à jour les informations du profil via l'API

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 :

curl -X PUT \
  -H "Content-Type: multipart/form-data" \
  -H "Api-Key: mykey" \
  -H "Api-Username: username" \
  -d '{"name”: “new name"}' \
  -L 'https://mysite.com/users/user12345.json'

cela renvoie “success”:“OK”, suivi de tout le json de l’utilisateur mais ne fait en réalité aucune mise à jour.

Est-ce que je rate quelque chose ?

Sur un sujet connexe : est-il possible de mettre à jour le nom d’utilisateur en utilisant la même approche ?

Merci pour votre aide.

Oui, cette méthode a été dépréciée au profit du passage des identifiants dans l’en-tête (comme ci-dessous).

Vous avez mélangé les caractères de citation : " et . C’est peut-être la raison ici. :thinking:

4 « J'aime »

Merci @Arkshine. J’ai veillé à ce que tous les caractères de guillemet soient identiques \", mais cela ne fonctionne toujours pas.

Je n’arrive pas à comprendre quel est le problème.

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

1 « J'aime »

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 :

-d '{\"name”: “nouveau nom\", \"username\": \"nouvel utilisateur\"}' \\

1 « J'aime »

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'

4 « J'aime »

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