alank
(Andrew Lank)
1
Discourseの投稿を読み、SITENAME.com/admin/users/list/all.json?email=some@email.comというURLが見つかったと思い込んでいました。これは、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')
お詫び申し上げますが、メールアドレスが存在するかどうかを単純に true/false で返す API リクエストがあると嬉しいです。現状では、すべてのユーザー情報を取得する重いレスポンスを返す全ユーザーのリストをフェッチしていますが、本当に必要なのはメールアドレスの存在確認だけです。実際には、ユーザーが当サイトに訪れる前に、まず Discourse でログインしているかどうかを確認するための true/false が欲しいのです。
RGJ
(Richard - Communiteq)
4
以下のコードでは、すべてのユーザーを取得できていません。
superagent.get(`${this.baseUrl}/admin/users/list/all.json?email=${emailAddress}`)
alank
(Andrew Lank)
5
おお、ありがとうございます!これでユーザーとメールアドレスが1件だけ取得されるんですね。問題ありません!最高です!!