디스코urses 그룹에 사용자를 추가할 수 없습니다

안녕하세요, 저는 WordPress 사이트와 Discourse 커뮤니티 간의 사용자 동기화를 위해 wp-discourse 플러그인을 사용하고 있습니다. 웹사이트에서 사용자가 등록되면 해당 사용자를 Discourse 그룹에 추가하기 위해 아래 코드를 사용하고 있습니다.

function mepr_capture_new_member_signup_completed($event) {
    $user = $event->get_data();
    $user_id = $user->ID;
    
    // 사용자 ID 기반 사용자 데이터 가져오기
    $user_data = get_userdata($user_id);
	
    // 사용자 데이터에 대한 디버그 정보 기록
    log_debug_info("debug_log.txt", "User Data: ", print_r($user_data, true));

    // 사용자 데이터 존재 여부 확인
    if ($user_data) {
        // 사용자 역할 가져오기
        $roles = $user_data->roles;

        // 사용자가 "browns" 역할을 가지고 있지 않거나 가지고 있는지 확인
        if (!in_array('browns', $roles) || in_array('browns', $roles)) {
            // 기존 모든 역할 제거
            foreach ($roles as $role) {
                $user_data->remove_role($role);
            }

			// "browns" 역할 추가
			$user_data->add_role('browns');
			log_debug_info("debug_log.txt", "Assigned Browns Role: ", print_r($user_data, true));

			if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
				// "browns"를 위한 Discourse 그룹에 사용자 추가
				$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
				log_debug_info("debug_log.txt", "s2member level 1 groups: ", print_r($s2member_level_1_groups, true));

				// $s2member_level_1_groups가 비어 있지 않은지 확인
				if (!empty($s2member_level_1_groups)) {
					$groups = explode(',', $s2member_level_1_groups);
					foreach ($groups as $group) {
						$group = trim($group); // 그룹 이름에서 공백 제거
						log_debug_info("debug_log.txt", "Attempting to add user to Discourse group: ", $group);
						
						$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $group);
						
						if (is_wp_error($result)) {
							$error_message = $result->get_error_message();
							log_debug_info("debug_log.txt", "Failed to add to Discourse Group: ", $error_message);
							log_debug_info("debug_log.txt", "Error Data: ", print_r($result->get_error_data(), true));
						} else {
							log_debug_info("debug_log.txt", "Successfully added to Discourse Group: ", $group);
						}
					}
				} else {
					log_debug_info("debug_log.txt", "No Discourse groups found in settings.", "");
				}
			}

            // 필요한 경우 추가 SSO 매개변수
            $sso_params = array();
            $sso_params = apply_filters('wpdc_sso_params', $sso_params, $user_data);

        } else {
            // 모든 레벨 그룹 수집
            $s2member_level_1_groups = get_option('s2member_level_1_groups', '');
            $s2member_level_2_groups = get_option('s2member_level_2_groups', '');
            $s2member_level_3_groups = get_option('s2member_level_3_groups', '');
            $s2member_level_4_groups = get_option('s2member_level_4_groups', '');

            // 모든 그룹을 하나의 배열로 병합
            $s2member_level_groups = array_merge(
                explode(',', $s2member_level_1_groups),
                explode(',', $s2member_level_2_groups),
                explode(',', $s2member_level_3_groups),
                explode(',', $s2member_level_4_groups)
            );

            // 중복 제거
            $s2member_level_groups = array_unique($s2member_level_groups);

            // 수집된 모든 그룹에서 사용자 제거
            foreach ($s2member_level_groups as $group) {
                $group = trim($group); // 그룹 이름에서 공백 제거
                $result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);

                if (is_wp_error($result)) {
                    $error_message = $result->get_error_message();
                    log_debug_info("debug_log.txt", "Failed to remove from Discourse Group: ", $error_message);
                } else {
                    log_debug_info("debug_log.txt", "Successfully removed from Discourse Group: ", $group);
                }
            }
        }
    } else {
        // $user_id 또는 $role이 제공되지 않은 경우 처리
        // 요구 사항에 따라 기록하거나 다르게 처리할 수 있습니다
        // 현재로서는 메시지를 기록합니다
        error_log("User ID or role not provided in user_registered_callback.");
    }
}

add_action('mepr-event-member-signup-completed', 'mepr_capture_new_member_signup_completed');

그리고 여기서 다음과 같은 응답을 받고 있습니다.

=== User Data:  ===
WP_User Object
(
    [data] => stdClass Object
        (
            [ID] => 463
            [user_login] => sibahmed
            [user_pass] => $P$BqaZsm5xZuNLEt2oWmypNGQ1QRyoUU0
            [user_nicename] => sibahmed
            [user_email] => sibahmed82@gmail.com
            [user_url] => 
            [user_registered] => 2024-08-04 09:42:50
            [user_activation_key] => 
            [user_status] => 0
            [display_name] => sib ahmed
        )

    [ID] => 463
    [caps] => Array
        (
            [subscriber] => 1
            [browns] => 1
        )

    [cap_key] => wp_capabilities
    [roles] => Array
        (
            [0] => subscriber
            [1] => browns
        )

    [allcaps] => Array
        (
            [read] => 1
            [level_0] => 1
            [upload_files] => 1
            [access_s2member_level0] => 1
            [subscriber] => 1
            [browns] => 1
        )

    [filter] => 
    [site_id:WP_User:private] => 1
)


=== Assigned Browns Role:  ===
WP_User Object
(
    [data] => stdClass Object
        (
            [ID] => 463
            [user_login] => sibahmed
            [user_pass] => $P$BqaZsm5xZuNLEt2oWmypNGQ1QRyoUU0
            [user_nicename] => sibahmed
            [user_email] => sibahmed82@gmail.com
            [user_url] => 
            [user_registered] => 2024-08-04 09:42:50
            [user_activation_key] => 
            [user_status] => 0
            [display_name] => sib ahmed
            [user_level] => 0
        )

    [ID] => 463
    [caps] => Array
        (
            [browns] => 1
        )

    [cap_key] => wp_capabilities
    [roles] => Array
        (
            [0] => browns
        )

    [allcaps] => Array
        (
            [read] => 1
            [browns] => 1
        )

    [filter] => 
    [site_id:WP_User:private] => 1
)


=== s2member level 1 groups:  ===
Member,staff

=== Attempting to add user to Discourse group:  ===
Member

=== Failed to add to Discourse Group:  ===
An invalid response was returned from Discourse

=== Error Data:  ===
Array
(
    [http_code] => 404
    [http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)


=== Attempting to add user to Discourse group:  ===
staff

=== Failed to add to Discourse Group:  ===
An invalid response was returned from Discourse

=== Error Data:  ===
Array
(
    [http_code] => 404
    [http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)

또한 functions.php 파일의 상단에 이 클래스를 사용하고 있습니다.

use WPDiscourse\Utilities\Utilities as DiscourseUtilities;

이 경우에 도움을 주실 수 있을까요?

감사합니다

안녕하세요, API Key가 올바른지, Publishing Username이 관리자 계정인지 확인해 주실 수 있을까요? :thinking:

워드프레스에서 사용자를 게시할 때, 이 설정이 디스커스 설정에 있는지에 대해 알려 주실 수 있을까요? 이 설정이 어디에 위치하는지도 궁금합니다. 그리고 저는 워드프레스에서 디스커스로 게시물을 게시하지 않고 있습니다.

늦게 답변드려 죄송합니다.

WP Discourse 유틸리티 함수는 API 키와 사용자 이름에 의존합니다.
해당 옵션은 일반 설정에서 찾을 수 있습니다:

여기서 유효한 API 키와 사용자 이름을 제공해야 하며, 사용자 이름은 관리자여야 합니다.

이 부분이 제대로 설정되어 있는지 확인해 주시겠습니까?