Comment gérer les caractères non-ASCII dans l'en-tête Api-Username ?

Salut,

J’intègre l’API Discourse en utilisant RestSharp et je rencontre un problème avec les noms d’utilisateur contenant des caractères non-ASCII (spécifiquement des umlauts allemands). J’ai besoin d’usurper l’identité d’un utilisateur avec le nom d’utilisateur foö (contient ö).

Lorsque j’envoie le nom d’utilisateur brut dans l’en-tête Api-Username, j’obtiens : Request headers must contain only ASCII characters (Les en-têtes de requête ne doivent contenir que des caractères ASCII)

Lorsque j’encode l’URL du nom d’utilisateur (Uri.EscapeDataString("foö")fo%C3%B), l’authentification échoue avec : {"errors":["Du bist nicht berechtigt, die angeforderte Ressource anzuzeigen. Der API-Benutzername oder -Schlüssel ist ungültig."],"error_type":"invalid_access"} (accès interdit / utilisateur inexistant)

J’utilise une clé API avec des privilèges d’administrateur. Point de terminaison : POST /posts.json pour créer des sujets au nom d’utilisateurs.

Quelle est la bonne façon de transmettre les noms d’utilisateur avec des caractères non-ASCII dans l’en-tête Api-Username ? Devrais-je :

  1. Utiliser une méthode d’encodage différente ?
  2. Utiliser plutôt un ID d’utilisateur (si oui, quel nom d’en-tête) ?
  3. Quelque chose de complètement différent ?

Merci pour toute aide !

1 « J'aime »

Belle trouvaille @xbd - ceci sera corrigé par

Mais en attendant…

… vous pouvez utiliser l’ID utilisateur (il est en fait préféré au nom d’utilisateur si vous l’avez) via l’en-tête Api-User-Id

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

3 « J'aime »