通过 API 获取用户的电子邮件地址

是否可以通过 API 获取用户的当前电子邮件地址?

我们的使用场景如下:

我们允许用户通过我们的网站管理他们的 Discourse 信息。通常情况下,Discourse 仅用作邮件列表,几乎所有用户都不会访问实际的 Discourse 站点。我希望能够向用户显示 Discourse 当前使用的电子邮件地址,以便他们查看是否需要更改。

除电子邮件外,我能够获取所有其他字段的信息。

过去存在一个 API 端点 users/{username}/emails,但该端点似乎已不再可用。

你好,

GET /users/:username.json

在以下两种情况下会显示邮箱地址:

  • API KEY 持有者的用户 ID 与请求的用户名对应的用户 ID 相同
  • API KEY 持有者是工作人员,且请求的用户处于暂存状态

在代码中了解更多详情:

据我所知,该代码路径近期未发生变更。

是的,但这帮不了我。所有用户都已经活跃,用户 API 密钥将无法匹配。

这个请求在我这里可以正常工作:

curl "http://example.com/users/joffreyjaffeux/emails.json" \
     -H 'Api-Username: joffreyjaffeux' \
     -H 'Api-Key: xxx' \
     -H 'Content-Type: application/json; charset=utf-8' \

但是,如果 URL 是 http://example.com/users/paulapostolos/emails.json,它能正常工作吗?

是的,只要以下条件成立,它就应该适用于您自己和其他用户:

  def can_check_emails?(user)
    is_admin? || (is_staff? && SiteSetting.moderators_view_emails)
  end

请注意,执行此操作将触发工作人员操作日志。

成功了……我之前有一些旧代码(大概是 1.4 版本左右),当时把请求设为 PUT,并且 URL 末尾没有 .json。我把它改成了 GET 请求,并更新了 URL,现在可以正常工作了。

感谢您的帮助!