Ich habe in diesen Foren ein paar Beispiele gefunden, wie man Benutzerinformationen über die API aktualisiert, aber es funktioniert nicht. Ich bin ein Junior-Entwickler, vielleicht übersehe ich etwas Offensichtliches.
Zuerst habe ich versucht, dieses Beispiel zum Laufen zu bringen: curl -X PUT -d 'name=new name’ -L 'https://mysite.com/users/user12345.json?api_key=mykey\u0026api_username=username'
aber ich bekomme ["BAD CSRF"], also habe ich Folgendes versucht:
Haben Sie Reverse engineer the Discourse API ausprobiert, um zu sehen, was passiert, wenn Sie die Benutzeroberfläche verwenden, um die Änderung vorzunehmen?
Es funktioniert für mich, wenn ich eine PUT-Anfrage an z.B. /u/test_one.json sende.
Danke @JammyDodger. Ich habe es so gemacht, wie Sie vorgeschlagen haben, und den Namen in der Admin-Oberfläche aktualisiert und dann im Netzwerk-Tab nachgesehen. Wie Sie erwähnt haben, erfolgt die Aktualisierung unter einer anderen URL (/u statt /users), aber wenn ich die URL ändere, funktioniert es immer noch nicht.
Unter „Form Data“ betrachte ich die Anfrage und sie lautet: name: "newname", genau wie ich sie sende.
Soweit ich das beurteilen kann, sieht alles richtig aus und es wird immer noch nicht aktualisiert. Ich bin ratlos.
Ok… Ich habe viel mehr Zeit damit verbracht, die Foren zu durchsuchen, und ein ähnliches Problem von vor 7 Jahren gefunden. Es stellt sich heraus, dass es funktioniert, wenn Sie den Content-Type auf „application/json; charset=utf-8“ aktualisieren!
Ich habe noch ein letztes Problem: Wie aktualisiere ich den Benutzernamen über die API?
Ich habe versucht, so etwas zu tun, aber es funktioniert nicht:
Ok… Ich konnte das endlich herausfinden. Ich hinterlasse hier eine kleine Zusammenfassung, falls jemand in Zukunft nach einer Lösung sucht. Die anderen Antworten, die ich in den Foren gefunden habe, waren veraltet.
Um den Namen über die API zu aktualisieren: 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'
Um den Benutzernamen über die API zu aktualisieren: 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'