카카오톡, 네이버에서 회원가입 시 전화번호를 받도록 해놓았는데
휴대폰 필드에 휴대폰번호가 기입되어있지 않습니다.
어디서 설정해야하나요?
그리고
소셜 회원가입 시 user_register 은 호출되지 않나요?
회원가입 시 알림톡을 발송할 수 있도록 설정해놓았습니다.
add_action( 'user_register', 'alimtalk_send_after_reg', 10, 1 );
function alimtalk_send_after_reg( $user_id ) {
$user_phone = get_user_meta($user_id, 'billing_phone', true);
$alimtalk_template = 'xdeng-regist';
cosmosfarm_members_alimtalk_send($user_phone, $alimtalk_template, $user_id, '');
}
안녕하세요~^^
코스모스팜 회원관리 플러그인 소셜 로그인 시
추가 정보를 받아오시려면
소셜에서 원하시는 정보를 보낼 수 있는지 확인해보셔야 할 듯합니다.
소셜 쪽에서 원하시는 정보를 보내주지 않는다면
플러그인 쪽에서 해결이 어렵습니다.
카카오계정의 경우에는
카카오 설정 쪽에서 사업자 정보를 등록하여 비즈 앱으로 전환하고
비즈니스 채널을 연결하면 권한이 없는 동의항목에 대한 검수 신청을 할 수 있습니다.
워드프레스의 기본 사용자 등록 이후에는
항상 user_register 액션이 동작합니다.
본 게시글은 KBoard 카테고리와 맞지않아 워드프레스 카테고리로 이동되었습니다.
고맙습니다.
카카오, 네이버 로그인 api에서는 이미 추가정보를 받게 해놓은 상태입니다.
워드프레스의 wp-config.php 파일에 아래 코드를 추가해보시겠어요?
define('COSMOSFARM_MEMBERS_CERTIFIED_PHONE', true);
위의 코드를 추가하면
워드프레스 관리자 -> 회원가입관리 -> 본인인증 페이지에
통신사 저장 필드, 휴대폰번호 저장 필드 설정이 표시됩니다.
고맙습니다.
제 질문을 다시 적어보겠습니다.
네이버/카카오 소셜 회원가입 후
각 sns의 추가정보 (이름, 연락처 등) 가 wp-members 필드에 자동으로 삽입이 되게 설정을 할 수 있나요?
위 코드는 본인인증 후 삽입되는 것 같습니다.
저희는 본인인증을 아직 구현하지않았습니다.
죄송합니다. 착오가 있었습니다.
이름은 아래의 코드를 테마 functions.php에 입력해보시겠어요?
add_action('cosmosfarm_members_user_social_register', 'comosfarm_members_user_social_register', 10, 2);
function comosfarm_members_user_social_register($user_id, $social_login){
if($social_login->channel == 'naver' || $social_login->channel == 'kakao'){
if(isset($social_login->raw_data->name) && $social_login->raw_data->name){
wp_update_user(array('ID'=>$user_id, 'display_name'=>$social_login->raw_data->name));
}
}
}
휴대폰 번호는 wp-members 필드에
메타키가 billing_phone 인 필드를 추가해주세요.
받아올 정보에 휴대폰 정보가 있으면
해당 필드로 입력합니다.
고맙습니다.
if($social_login->channel == 'naver' || $social_login->channel == 'kakao'){
if(isset($social_login->raw_data->name) && $social_login->raw_data->name){
wp_update_user(array('ID'=>$user_id, 'billing_phone'=>$social_login->raw_data->mobile));
$log_txt = "성공".$social_login->raw_data->name."N phone : ".$social_login->raw_data->mobile." social : ". $social_login->channel . "K phone : ".$social_login->raw_data->phone_number;
$log_file = fopen("tmp/log.txt","a");
fwrite($log_file, $log_txt."\r\n");
fclose($log_file);
}
else {
$log_txt = "실패".$social_login->raw_data->name."N phone : ".$social_login->raw_data->mobile." social : ". $social_login->channel . "K phone : ".$social_login->raw_data->phone_number; $log_file = fopen("tmp/log.txt","a");
fwrite($log_file, $log_txt."\r\n");
fclose($log_file);
}
}
위 소스를 통해 네이버, 카카오로 로그인 한 후
실패 N phone : social : naver K phone :
실패 N phone : social : kakao K phone :
라는 로그가 찍히는 걸로 확인되었습니다.
$social_login->raw_data->name 이 데이터가 가져와지지 않는데, 현재 네이버, 카카오 API는 모두 정상적으로 연동되어있는 상태이며 필수권한으로 이름 값을 셋팅해놓았습니다.
어떤 문제가있는 걸까요?
wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members_Controller.class.php 파일에서
어떻게 동작되는지 확인하실 수 있습니다.
소셜 로그인 시 회신되는 모든 정보를 raw_data에 입력합니다.
$social_login->raw_data 전체를 로그로 찍어봤을 때
다른 정보가 넘어오지 않는다면,
회신되는 정보에 이름 등의 정보가 없이 회신되고 있는 듯 합니다.
아래 링크에서 각 정보들의 파라미터를 확인해보실 수 있습니다.
고맙습니다.
if($social_login->channel == 'naver'){
$log_txt = "네이버 성공 ".$social_login->raw_data;
$log_file = fopen("tmp/log.txt","a");
fwrite($log_file, $log_txt."\r\n");
fclose($log_file);
if(isset($social_login->raw_data->name) && $social_login->raw_data->name){
$user_field_cosm = array('ID'=>$user_id,
'name_kor'=>$social_login->raw_data->name,
'billing_phone'=>$social_login->raw_data->mobile);
wp_update_user($user_field_cosm);
}
}
if ($social_login->channel == 'kakao'){
$log_txt = "카카오 성공 ".$social_login->raw_data->phone_number;
$log_file = fopen("tmp/log.txt","a");
fwrite($log_file, $log_txt."\r\n");
fclose($log_file);
if(isset($social_login->raw_data->phone_number) && $social_login->raw_data->phone_number){
$user_field_cosm = array('ID'=>$user_id,
'name_kor'=>$social_login->raw_data->name,
'billing_phone'=>$social_login->raw_data->phone_number);
wp_update_user($user_field_cosm);
}
}
위 로그를 찍어보니
네이버 성공 010-[번호] user ID : 1046
위처럼 정상적으로 받아오는데 회원정보에는 업데이트가 안되고있습니다.
wp member의 휴대폰 필드 Meta Key : billing_phone
로 되어있구요
어떤게 잘못되어있는건지 모르겠습니다.
또한 카카오에서는 API 필요사항 허용 했고 회원가입 시에도 동의하는 표시가 나오는데도 불구하고
전화번호, 이름을 가져오지 못하고있습니다.
wp_update_user 함수는 userdata를 업데이트 하는 함수입니다.
billing_phone은 메타 데이터이기 때문에 update_user_meta 함수를 사용해주셔야 합니다.
데이터 테이블 상 wp_users 는 wp_update_user 함수를
wp_usermeta 은 update_user_meta 함수를 사용하셔서 정보를 업데이트 하실 수 있습니다.
카카오에서 동의하는 표시가 나올 때
동의에 체크하셨는데도 정보를 가져오지 못한다면
카카오측에 문의해보시는 것도 좋을 듯 합니다.
고맙습니다.
https://developers.kakao.com/tool/rest-api/open/get/v2-user-me
해당 페이지에서 api 테스트 했을 시에는 이상 없이 잘 호출이 되는걸로 나옵니다.
카카오측에 어떻게 질문을 해야할까요?
+ 카카오 알림톡템플릿 - 치환 사용된 템플릿에서
알림톡 발신이 안되는 현상이 있습니다.
add_action( 'user_register', 'alimtalk_send_after_reg', 10, 1 );
function alimtalk_send_after_reg( $user_id ) {
$user_phone = get_user_meta($user_id, 'billing_phone', true);
$alimtalk_template = 'xdeng-regist';
cosmosfarm_members_alimtalk_send($user_phone, $alimtalk_template, $user_id, '');
}
위 코드를 사용하였으며, alimtalk_template 변수에는
회원가입관리 - 알림톡 템플릿 설정 에서 등록한 '템플릿 이름' , '템플릿 코드' 둘 다 사용해보았습니다.
물론 치환은 제대로 매치해놓았습니다.
그 외에 치환이 없는 템플릿코드는 잘 사용됩니다.
혹시 아래 코드로 동작하는지
확인해보시겠어요?
add_action( 'user_register', 'alimtalk_send_after_reg', 10, 1 );
function alimtalk_send_after_reg( $user_id ) {
$user_phone = get_user_meta($user_id, 'billing_phone', true);
$cosmosfarm_members_sms = get_cosmosfarm_members_sms();
$cosmosfarm_members_sms->send_execute_alimtalk($user_phone, 'xdeng-regist',
array(
'치환 대상' => '치환 내용',
)
);
}
고맙습니다.
$cos_memb_sms->send_execute_alimtalk($user_phone,'xd-regist-id',
array('#{아이디}'=>'지훈')
);
위처럼 실행했는데 안됩니다. 잘못설정한부분이 있을가요?
치환 대상 => 치환문구
로그찍었을때 user_phone 은 잘 나오고있습니다.
정보 전달에 오류가 있는지 다시 확인해보겠습니다.
치환 정보에서 템플릿에 #{아이디}라고 되어 있다면
'아이디'=>'지훈' 으로 해주시면 됩니다.
고맙습니다.
감사합니다. 정상작동합니다.
send_execute_alimtalk 이런 함수를 찾을 수 있는 문서가 있을까요?
해당 함수는
wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members_Sms.class.php 파일에 있습니다.
함수 검색 시 vscode 기준으로
전체 검색에서 해당 함수명을 검색하면
쉽게 찾으실 수 있습니다.
고맙습니다.