API 查找邮箱地址,还是搜索?

我读了一篇 Discourse 帖子,以为找到了 SITENAME.com/admin/users/list/all.json?email=some@email.com 这个链接,这正是我需要的:通过查询 Discourse API(从我们的 API 发起)来验证我们的 SSO 站点是否存在对应的 Discourse 成员。但问题是,上面的链接无法工作。如果我能直接获取所有用户的列表,我就可以根据电子邮件地址进行过滤或结果筛选。

我认为这个接口可能受到严格保护或无法访问,或者是否有其他方法可以实现?

该路径应该仍然有效(刚测试过)。

对于 SSO,你也可以使用 by-external
请参阅 Discourse API Docs

@RGJ 你说得对!它确实能工作!!!是我 Postman 请求测试出了问题。:frowning:

不过,使用 SuperAgent 发起请求,例如:

let res = await superagent.get(`${this.baseUrl}/admin/users/list/active`)
          .query({show_emails: true})
          .set('Api-Key', this.apiKey)
          .set('Api-Username', this.defaultDiscourseUser)
          .set('Content-Type', 'application/json')
          .set('Accept', 'application/json')

我成功获取到了邮箱地址。

抱歉,不过如果能有一个 API 请求直接返回 true/false 来判断邮箱是否存在就好了。目前我不得不拉取所有用户(响应数据量较大,因为返回了所有用户信息),而我只想验证邮箱是否存在——实际上,我只希望 Discourse 返回一个 true/false,确认该用户是否已在我们网站之前登录过。

使用

superagent.get(`${this.baseUrl}/admin/users/list/all.json?email=${emailAddress}`)

无法获取所有用户。

哇,太感谢了!这只会获取一个用户和邮箱吗?没问题!太棒了!!!