接続されたクライアントからAPI経由で既存のユーザーを更新または作成する最良の方法は?

以下は、多くの人が直面したであろうユースケースです。

  • Discourse に多数のユーザーがいる
  • API を使用して Discourse ユーザーを作成し、グループメンバーシップを管理する外部システム(サービスプロバイダー、Drupal)がある
  • Drupal には重複するユーザーセットがある。つまり、同じメールアドレスを持つユーザーが Discourse と Drupal に存在しますが、リンクされていません
  • ユーザーが SSO を使用して Discourse にアクセスせず、代わりにメールに依存する場合があるため、Drupal は API を使用してユーザー、グループ、およびメンバーシップを同期します

現在の動作:

  • Discourse は、同じメールアドレスを持つ Discourse ユーザーが既に存在するため、Discourse ユーザーを作成する API 呼び出しを拒否することがあります。

望ましい動作:

  • Discourse は、メールを介して既存の Discourse ユーザーを Drupal ユーザーにリンクします。

提案される解決策:

  • マッチするメールアドレスを持つユーザーを取得するために、Discourse の /admin/users/list/all.json?email=$email API エンドポイントをクエリします。
  • マッチするユーザーが存在する場合
    • 既存のユーザーを接続します(Drupal 側)。
  • それ以外の場合
    • 新しい Discourse ユーザーを作成します。

質問

  • これは妥当な解決策のように思えますか、それともより良い方法がありますか?
  • API クエリは正しく形成されていますか?
  • all.jsonemail クエリ文字列パラメータも文書化されておらず、例はほとんど見つかりませんでしたが、この記事 はそれが最善の方法であることを示しているようです。
「いいね!」 1

私は皆さんのような専門家ではありませんが、そうだと思います。

私にはそう見えます。常に最新の状態である最良のドキュメントは、Discourse APIのリバースエンジニアリングです。

「いいね!」 1