연결된 클라이언트에서 API를 통해 기존 사용자를 업데이트하거나 생성하는 최선의 방법?

다음은 많은 분들이 경험해 보셨을 사용 사례입니다:

  • Discourse에 여러 사용자가 있음
  • Discourse 사용자를 생성하고 그룹 멤버십을 관리하는 API를 사용하는 외부 시스템(서비스 제공업체, Drupal)이 있음
  • Drupal에는 부분적으로 겹치는 사용자 집합이 있음. 즉, 동일한 이메일 주소를 가진 사용자가 Discourse와 Drupal 양쪽에 존재하지만 연결되어 있지 않음
  • 사용자가 SSO를 통해 Discourse에 액세스하는 대신 이메일에 의존할 수 있으므로, Drupal은 사용자를 액세스할 때 사용자를, 그룹 및 멤버십을 동기화하기 위해 API를 사용

현재 동작:

  • 동일한 이메일을 가진 Discourse 사용자가 이미 존재하기 때문에 Discourse가 Discourse 사용자를 생성하기 위한 API 호출을 거부하는 경우가 있음

원하는 동작:

  • 이메일을 통해 기존 Discourse 사용자를 Drupal 사용자와 연결

제안된 해결책:

  • 일치하는 이메일 주소를 가진 사용자를 가져오기 위해 Discourse의 /admin/users/list/all.json?email=$email API 엔드포인트를 쿼리
  • 일치하는 사용자가 존재하는 경우
    • 기존 사용자를 연결(Drupal 측)
  • 그렇지 않으면
    • 새로운 Discourse 사용자 생성

질문

  • 이 해결책이 합리적인지, 아니면 더 나은 방법이 있는지?
  • API 쿼리가 올바르게 형성되었는지?
    all.json도 email 쿼리 문자열 매개변수도 문서화되어 있지 않고, 예도 거의 찾지 못했지만, 이 게시물은 이것이 최선의 방법임을 시사하는 것 같습니다.

저는 일부 분들만큼 전문가가 아니지만, 그렇다고 생각합니다.

제 생각에는 올바르게 보입니다. 가장 좋고 항상 최신인 문서는 Reverse engineer the Discourse API입니다.