xbd
1
您好,
我正在使用 RestSharp 集成 Discourse API,但在使用包含非 ASCII 字符(特别是德语变音符号)的用户名时遇到了问题。我需要模拟用户名为 foö(包含 ö)的用户。
当在 Api-Username 标头中发送原始用户名时,我收到:请求头中只允许包含 ASCII 字符
当对用户名进行 URL 编码时(Uri.EscapeDataString("foö") → fo%C3%B6),身份验证失败,返回:{"errors":["您无权查看所请求的资源。API 用户名或密钥无效。"],"error_type":"invalid_access"}(访问被拒绝/用户不存在)
我使用的是具有管理员权限的 API 密钥。端点:POST /posts.json,用于代表用户创建主题。
传递包含非 ASCII 字符的用户名到 Api-Username 标头的正确方法是什么?我应该:
- 使用不同的编码方法?
- 改用用户 ID(如果是,使用哪个标头名称)?
- 完全使用其他方法?
感谢您的指导!
1 个赞
感谢 @xbd 的发现 - 这将通过
修复
但在同时…
…您可以通过 Api-User-Id 标头使用用户 ID(如果您有的话,实际上更推荐使用用户 ID 而不是用户名)
curl -X GET "https://your-discourse.com/admin/users.json" \
-H "Api-Key: your-api-key" \
-H "Api-User-Id: 123"
3 个赞