Api-Usernameヘッダーの非ASCII文字の扱い方

こんにちは。

RestSharp を使用して Discourse API と統合していますが、ユーザー名に非 ASCII 文字(特にドイツ語のウムラウト)が含まれている場合に問題が発生しています。ユーザー名 foöö を含む)をエミュレートする必要があります。

Api-Username ヘッダーに生のユーザー名を使用すると、次のエラーが表示されます。Request headers must contain only ASCII characters(リクエストヘッダーには ASCII 文字のみを含める必要があります)

ユーザー名を URL エンコードする (Uri.EscapeDataString("foö")fo%C3%B6) と、認証が失敗し、次のエラーが表示されます。{"errors":["Du bist nicht berechtigt, die angeforderte Ressource anzuzeigen. Der API-Benutzername oder -Schlüssel ist ungültig."],"error_type":"invalid_access"}(アクセス拒否 / ユーザーが存在しない)

管理者権限を持つ API キーを使用しています。エンドポイントは、ユーザーに代わってトピックを作成するための POST /posts.json です。

非 ASCII 文字を含むユーザー名を Api-Username ヘッダーで渡す正しい方法はありますか?次のいずれかを行うべきでしょうか。

  1. 別のエンコード方法を使用する?
  2. ユーザー ID を使用する(その場合、ヘッダー名は?)。
  3. 全く別の方法?

ご指導いただけると幸いです!

「いいね!」 1

@xbd さん、良い指摘ありがとうございます。これは以下で修正されます。

しかし、それまでの間…

Api-User-Id ヘッダーを介してユーザーID(実際には、持っている場合はユーザー名よりも優先されます)を使用できます。

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

「いいね!」 3