Aiuto per aggiornare info profilo via API

Ho trovato alcuni esempi in questi forum di aggiornamento delle informazioni utente tramite l’API ma non riesco a farlo funzionare. Sono uno sviluppatore junior, quindi forse mi sfugge qualcosa di ovvio.

Per prima cosa ho provato a far funzionare questo esempio:
curl -X PUT -d 'name=new name’ -L 'https://mysite.com/users/user12345.json?api_key=mykey\u0026api_username=username'

ma ottengo [“BAD CSRF”], quindi ho provato questo:

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'

questo restituisce “success”:“OK”, seguito da tutto il json per l’utente ma in realtà non esegue alcun aggiornamento.

Mi sfugge qualcosa?

Su un argomento correlato: è possibile aggiornare il nome utente utilizzando lo stesso approccio?

Grazie per il tuo aiuto.

Sì, questo modo è stato deprecato a favore del passaggio delle credenziali nell’intestazione (come di seguito).

Hai mescolato i caratteri delle virgolette: " e . Questo potrebbe essere il motivo. :thinking:

4 Mi Piace

Grazie @Arkshine. Mi sono assicurato che tutti i caratteri di virgoletta siano uguali \", ma non funziona ancora.

Non riesco a capire qual è il problema.

Hai provato Reverse engineer the Discourse API per verificare cosa succede quando usi l’interfaccia utente per apportare la modifica?

Funziona per me quando invio una richiesta PUT a, ad esempio, /u/test_one.json

1 Mi Piace

Grazie @JammyDodger. Ho fatto come hai suggerito e ho aggiornato il nome nell’interfaccia di amministrazione e poi ho guardato nella scheda di rete. Come hai menzionato, l’aggiornamento avviene a un URL diverso (/u invece di /users), ma quando cambio l’URL non funziona ancora.

Sotto “Form Data”, sto guardando la richiesta ed è: name: "newname" proprio come la sto inviando.

Per quanto ne so, tutto sembra a posto e non si aggiorna ancora. Sono perplesso.

Ok… Ho passato molto più tempo a cercare nei forum e ho trovato un problema simile di 7 anni fa. A quanto pare, se aggiorni il Content-Type a “application/json; charset=utf-8”, funziona!

Ho un ultimo problema: come aggiorno il nome utente tramite l’API?

Ho provato a fare qualcosa di simile ma non funziona:

-d '{\"name”: “new name\", \"username\": \"new username\"}' \\

1 Mi Piace

Ok… Sono finalmente riuscito a capire come fare. Lascerò un piccolo riassunto qui nel caso in cui qualcuno in futuro cerchi come fare. Le altre risposte che ho trovato sui forum erano obsolete.

Per aggiornare il nome tramite 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'

Per aggiornare il nome utente tramite 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 Mi Piace

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