이메일로 웹훅을 사용해 그룹에 사용자 추가

안녕하세요,

웹훅을 통해 WordPress 사용자를 Discourse의 비공개 그룹에 추가하려고 하고 있습니다.

WP Discourse 플러그인을 SSO 로그인 방법으로 사용하고 있으며, Discourse에서 사용자가 사용자명을 변경하는 것을 허용하지 않고 있습니다. 이렇게 한 이유는 WordPress의 사용자명을 Discourse에서 그룹에 추가할 때 사용할 수 있을 것이라 생각했기 때문입니다. 두 플랫폼의 사용자명이 동일할 것이라고 생각했거든요.

문제는 WordPress에서 사용자명이 자동으로 생성될 때, 때로는 이메일 주소를 사용자명으로 사용하는 경우입니다. 하지만 Discourse는 사용자명에 이메일 주소를 허용하지 않으므로, “@” 기호에서 사용자명이 잘립니다.

예시:
WordPress 이메일: jhon@gmail.com
WordPress 사용자명(자동 생성): jhon@gmail.com
Discourse 사용자명(WP Discourse SSO를 통해 생성): jhon

이 때문에 WordPress 사용자명을 사용하여 사용자를 그룹에 추가할 수 없습니다.

더 간단한 방법이 있을까요?

사용자명 대신 이메일 주소를 사용하여 사용자를 그룹에 추가할 수 있다면 정말 좋겠습니다. 이메일은 어떤 앱(CRM, WordPress 등)에서도 항상 사용 가능하므로, 해당 이메일로 사용자명을 가져오기 위해 API에 “GET” 요청을 보낸 후 사용자명을 그룹에 "PUT"하는 추가 단계가 필요하지 않을 것입니다.

저는 사용자가 양식을 제출할 때 WordPress에서 웹훅으로 이 데이터를 보내기 위해 Fluent Forms를 사용하고 있으므로, GET 요청을 한 후 사용자명을 PUT하는 방식으로 처리할 수 없습니다.

감사합니다!

제가 이해한 바로는, 질문자님은 다음과 같이 하고 계신 것 같습니다.

  1. DiscourseConnect를 사용하여 WordPress를 제공자(provider)로, Discourse를 클라이언트로 설정하는 것.
  2. WordPress의 웹훅(Webhook)을 사용하여 폼 액션(form action)의 결과로 사용자를 Discourse의 그룹에 추가하는 것 (예: /g/:group_name/members에 PUT 요청 보내기 (API 참고)).

이것이 맞다면, WordPress에서 discourse_username 사용자 메타 필드(user meta field)를 통해 Discourse 사용자명을 찾을 수 있습니다. 즉,

get_user_meta($user_id, 'discourse_username', true);

를 사용하면 됩니다.

이 값을 사용하여 폼 액션 이후의 PUT 요청에서 사용할 사용자명을 가져오세요.

WP Discourse 플러그인의 사용자 웹훅(user webhooks)을 사용하면 사용자들의 discourse_username 필드가 채워지도록 보장할 수 있습니다 (참고로, 이는 현재 질문자님이 폼에서 사용하고 있는 웹훅과는 다른 웹훅입니다).