제 cURL 요청에 문제가 있는 이유는 무엇인가요?

이를 위한 헬퍼 함수가 Utilities 파일에 있습니다:

DiscourseUtilities::sync_sso_record( $sso_params );

어제 사용법에 대한 예시를 게시했습니다: I cannot add user to the discouse forum from a wordpress website when user added in a membership - #10 by simon. 까다로운 부분은 sso_params 인수를 위한 배열을 만드는 것입니다. 이 배열에는 external_id 필드가 포함되어야 합니다. 이 필드는 사용자의 WordPress ID로 설정됩니다:

	$sso_params = array(
		'external_id' => $user_id,
	);

페이로드에는 다음 목록의 어떤 필드를 포함시킬 수 있습니다: discourse/lib/discourse_connect_base.rb at 8f52fd1051e20fdff41321c5cff99fda05af86c1 · discourse/discourse · GitHub. 제가 링크한 ACCESSORS 목록 바로 아래에 표시된 BOOLS 배열에 유의하십시오. 이는 가능한 옵션 중 어떤 것이 booleans(true/false)인지 나타냅니다. WordPress에서 요청을 할 때, 모든 boolean 필드는 PHP의 true 또는 false 값이 아닌 문자열 'true' 또는 'false'로 설정해야 합니다.

아바타를 업데이트하려면 $sso_params 배열에서 avatar_url 필드를 설정하고 avatar_force_update 필드도 'true'로 설정하십시오.

자기소개(Bio)를 설정하는 데 사용할 수 있는 bio 필드가 있습니다.

WP Discourse 플러그인은 이미 bio 및 avatar_url 필드를 설정하고 있습니다. 또한 SSO 설정에 “Force Avatar Update” 설정이 있습니다. 문제는 이러한 설정이 사용자가 WordPress 사이트를 통해 Discourse에 로그인할 때만 업데이트될 수 있다는 점입니다. sync_sso_record 함수는 사용자가 Discourse에 로그인할 필요 없이 필드를 즉시 업데이트합니다.

또한, Discourse에서 사용자 자기소개가 설정되지 않는 것으로 보인다면, 플러그인이 기대하는 위치인 WordPress 사이트에서 자기소개가 설정되지 않았기 때문일 수 있습니다: wp-discourse/lib/plugin-utilities.php at 99325e15190f3a705284dbf582f1c4b2c0b21492 · discourse/wp-discourse · GitHub. WooCommerce에 자기소개를 위한 다른 필드가 있다면, 해당 필드에 접근하여 sync_sso_record 호출에 사용할 수 있습니다.