Benötige Hilfe beim Aktualisieren der Profilinformationen per API

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:

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'

Dies gibt “success”:“OK” zurück, gefolgt von dem gesamten JSON für den Benutzer, aber es werden keine Updates durchgeführt.

Übersehe ich etwas?

In einem verwandten Zusammenhang: Können Sie den Benutzernamen mit demselben Ansatz aktualisieren?

Vielen Dank für Ihre Hilfe.

Ja, dieser Weg wurde zugunsten der Übergabe der Anmeldeinformationen im Header (wie unten) als veraltet eingestuft.

Sie haben Anführungszeichen gemischt: " und . Das könnte hier der Grund sein. :thinking:

4 „Gefällt mir“

Danke @Arkshine. Ich habe sichergestellt, dass alle Anführungszeichen gleich sind \", aber es funktioniert immer noch nicht.

Ich kann das Problem nicht herausfinden.

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.

1 „Gefällt mir“

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:

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

1 „Gefällt mir“

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'

4 „Gefällt mir“

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