alank
(Andrew Lank)
1
我读了一篇 Discourse 帖子,以为找到了 SITENAME.com/admin/users/list/all.json?email=some@email.com 这个链接,这正是我需要的:通过查询 Discourse API(从我们的 API 发起)来验证我们的 SSO 站点是否存在对应的 Discourse 成员。但问题是,上面的链接无法工作。如果我能直接获取所有用户的列表,我就可以根据电子邮件地址进行过滤或结果筛选。
我认为这个接口可能受到严格保护或无法访问,或者是否有其他方法可以实现?
RGJ
(Richard - Communiteq)
2
该路径应该仍然有效(刚测试过)。
对于 SSO,你也可以使用 by-external。
请参阅 Discourse API Docs
alank
(Andrew Lank)
3
@RGJ 你说得对!它确实能工作!!!是我 Postman 请求测试出了问题。
不过,使用 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,确认该用户是否已在我们网站之前登录过。
RGJ
(Richard - Communiteq)
4
使用
superagent.get(`${this.baseUrl}/admin/users/list/all.json?email=${emailAddress}`)
无法获取所有用户。
alank
(Andrew Lank)
5
哇,太感谢了!这只会获取一个用户和邮箱吗?没问题!太棒了!!!