"BAD CSRF" beim Ausführen von PUT mit API, curl und PHP

Ich habe eine sehr einfache Funktion, die „funktionieren sollte", aber aus irgendeinem Grund tut sie es nicht. Kann mir jemand helfen zu verstehen, was wir falsch machen?

Wir erhalten ständig den Fehler „BAD CSRF".

public function changeName()
{
  $url = 'https://www.website.com/{username}.json';
  $data = ['name' => 'James', 'api_key' => DISCOURSE_API, 'api_username' => 'system'];

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:multipart/form-data'));
  curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));

  echo $response = curl_exec($ch);

  if (!$response)
  {
      return false;
  }

}

Übrigens habe ich bereits versucht, api_key und api_username als GET-Parameter in die URL oben zu verschieben, aber das hat nichts geändert.

Sie müssen die Werte für Api-Key und Api-Username in den Request-Header aufnehmen. Gegen Ende dieses Themas finden Sie ein hilfreiches curl-Beispiel: Sync DiscourseConnect user data with the sync_sso route.

Vielen Dank! Das hat funktioniert.

Für alle anderen mit demselben Problem:

$url = 'https://www.website.com/{username}.json';
$data = ['name' => 'George'];
$api_key = CUSTOM_DISCOURSE_API;

$headers = array("Content-Type: multipart/form-data;", "Api-Key: $api_key", "Api-Username: system");


$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

$result = curl_exec( $ch );

if ( curl_errno( $ch ) !== 0 ) {
   // Fehler behandeln, curl_close( $ch ) aufrufen und zurückkehren.
}

curl_close( $ch );

$discourse_user = json_decode( $result );

Nur noch als Ergänzung: Wenn jemand ein „user_field

Seit wann ist das verpflichtend? Ich habe es im Changelog nicht gefunden. Ich habe vor 2–3 Jahren ein Tool erstellt, um Kategorien im Batch zu erstellen, das einwandfrei funktionierte, und jetzt erhalte ich diesen Fehler…

Es tut uns leid, falls dies Probleme verursacht hat. Wir haben diese Änderung schrittweise eingeführt und die Nutzer so gut wie möglich informiert, aber es ist schwierig, jeden Fall der Veraltung zu erfassen.