Wie man nicht-ASCII-Zeichen im Api-Username-Header behandelt?

Hallo,

Ich integriere mich mit der Discourse API unter Verwendung von RestSharp und stoße auf ein Problem mit Benutzernamen, die Nicht-ASCII-Zeichen enthalten (insbesondere deutsche Umlaute). Ich muss einen Benutzer mit dem Benutzernamen foö (enthält ö) impersonieren.

Wenn ich den rohen Benutzernamen im Header Api-Username sende, erhalte ich: Request headers must contain only ASCII characters (Anforderungs-Header dürfen nur ASCII-Zeichen enthalten)

Wenn ich den Benutzernamen URL-kodiert sende (Uri.EscapeDataString("foö")fo%C3%B), schlägt die Authentifizierung fehl mit: {"errors":["Du bist nicht berechtigt, die angeforderte Ressource anzuzeigen. Der API-Benutzername oder -Schlüssel ist ungültig."],"error_type":"invalid_access"} (Zugriff verweigert / Benutzer existiert nicht)

Ich verwende einen API-Schlüssel mit Administratorrechten. Endpunkt: POST /posts.json zum Erstellen von Themen im Namen von Benutzern.

Was ist der korrekte Weg, Benutzernamen mit Nicht-ASCII-Zeichen im Header Api-Username zu übergeben? Soll ich:

  1. Eine andere Kodierungsmethode verwenden?
  2. Stattdessen eine Benutzer-ID verwenden (wenn ja, welcher Header-Name)?
  3. Etwas ganz anderes?

Vielen Dank für jegliche Hinweise!

1 „Gefällt mir“

Guter Hinweis @xbd – dies wird durch

behoben.

Aber in der Zwischenzeit…

… können Sie die Benutzer-ID (es wird tatsächlich gegenüber dem Benutzernamen bevorzugt, wenn Sie diese haben) über den Header Api-User-Id verwenden.

curl -X GET "https://your-discourse.com/admin/users.json" \
  -H "Api-Key: your-api-key" \
  -H "Api-User-Id: 123"

3 „Gefällt mir“