코스모스팜 소셜회원가입 후 전화번호 저장

카카오톡, 네이버에서 회원가입 시 전화번호를 받도록 해놓았는데

휴대폰 필드에 휴대폰번호가 기입되어있지 않습니다.

어디서 설정해야하나요?

 

그리고 

 

소셜 회원가입 시 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 전체를 로그로 찍어봤을 때

    다른 정보가 넘어오지 않는다면,

    회신되는 정보에 이름 등의 정보가 없이 회신되고 있는 듯 합니다.

     

    아래 링크에서 각 정보들의 파라미터를 확인해보실 수 있습니다.

    카카오 로그인 api

    네이버 로그인 api

    고맙습니다.

  • 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 함수를 사용해주셔야 합니다.

    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(
    			'치환 대상' => '치환 내용',
    		)
    	);
    }

    고맙습니다.

  • 카카오측에서 답변왔습니다.

     

    tim.l카카오

    17분

    확인해보니 모든 정보 정상 전달되는 것으로 보입니다.

     

    코스모스팜 측에서도 값이 잘 받아오는지 확인 부탁드립니다.

  • $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 기준으로 

    전체 검색에서 해당 함수명을 검색하면

    쉽게 찾으실 수 있습니다.

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요