네이버 이름 등 정보 가져오기

안녕하세요? 자주 질문을 드립니다.

 

네이버 소셜로그인 사용 시 이름이 오지 않는데요. 

네이버에서는 회원이름, 이메일, 프로필사진을 가져오도록 되어 설정했습니다.

WP-members 필드 설정에서는 First_name, user_email, Password를 필수로 지정한 상태입니다.

 

이 상태에서 네이버에서 들어오는 회원의 사용자 정보를 보니

- 사용자명 : 네이버 이메일

- 이름(first_name) :  네이버 이메일

- 별칭(필수) : 네이버 이메일

- 이메일 : 네이버 이메일 - 이는 문제는 없습니다.

- 웹사이트 : 네이버 블로그 주소

 

네이버 이름 등 등을 제대로 가져오려면 무엇을 수정해야 할까요?

미리 감사드립니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    코스모스팜 회원관리 플러그인 네이버 소설 로그인 시

    사용자명(user_login)과 이메일(user_email) 필드에는

    네이버 메일이 저장됩니다.

    공개적으로 표시할 이름(display_name)과 별칭(nickname) 필드에는

    네이버 닉네임이 저장됩니다.

     

    아래 관련 링크도 참고해보시겠어요?

    https://www.cosmosfarm.com/threads/document/24085

    고맙습니다.

  • 안녕하세요?

     

    빠른 답변에 감사드립니다.  점심시간에 짬을 내서 추가 무느이점을 적어보고 있습니다.

     

    고맙습니다

    알려주신 링크를 보고 아래와 같이 이해했습니다.
    즉 $profile->nickname = isset($data->response->nickname)?$data->response->nickname:'';를 
    $profile->nickname = isset($data->response->name)?$data->response->name:''; 로 변경하면 네이버의 닉네임이 워드프레스의 네임 항목으로 들어온다는 이야기인 것이죠?

    그런데 전 네이버 닉네임을 가져올 생각이 없고 이름과 이메일 그리고 사진만 가져오려고 하는데요.

    네이버 이름을 워드프레스의 사용자명(user_login)과 이름(first_name) 그리고 디스플레이 네임(display_name) 으로 가져오려면 아래와 같이 추가하면 될까요?
    논리적으로 추론해 봤습니다만..얼토당치도 않다면 전 개발관련 지식이 없어서 그러니 너무 나무라지는 마시기 바랍니다. 

    $profile->name = isset($data->response->first_name)?$data->response->first_name:'';
    $profile->name = isset($data->response->user_login)?$data->response->user_login:'';
    $profile->name = isset($data->response->display_name)?$data->response->display_name:'';


    네이버의 이름을 사용자명(user_login)과 이름(first_name) 그리고 디스플레이 네임(display_name)으로 모두 사용하려면 어떻게 해야할까요?  다른 접근 방법이 있을까요?

     

    감사합니다.

  • 올려주신 코드 중에서 $data->response 데이터는 네이버 쪽에서 보내는 데이터입니다.

    그렇기 때문에 아래의 코드로 교체하시면

    네이버의 이름이 워드프레스의 닉네임으로 설정됩니다.

    $profile->nickname = isset($data->response->name)?$data->response->name:''; 

     

    사용자명(user_login)은 보통 우리나라에서 말하는 아이디를 워드프레스는 사용자명이라고 부르고 있습니다.

    그렇기 때문에 변경이 불가능하며 영문을 포함한 영문 숫자 조합 4글자 이상이어야 합니다.

     

    first_name 필드와 display_name 필드에 네이버 이름을 적용하시려면

    FTP로 접속해서 /wp-content/plugins/cosmosfarm-members/class/api/Cosmosfarm_Members_API_Naver.class.php 파일에

    아래의 코드를 찾아서

    $profile->nickname = isset($data->response->nickname)?$data->response->nickname:'';

    아래의 코드로 교체해보세요.

    $profile->nickname = isset($data->response->name)?$data->response->name:''

     

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_action('cosmosfarm_members_social_login_callback', 'my_cosmosfarm_members_social_login_callback', 10, 4);
    function my_cosmosfarm_members_social_login_callback($channel, $profile, $user, $random_password){
    	wp_update_user(array('ID'=>$user->ID, 'display_name'=>$profile->nickname));
    	update_user_meta($user->ID, 'first_name', $profile->nickname);
    }

    고맙습니다.

  • 감사합니다.

    말씀하시대로 본건은 제대로 작동하는 것 같습니다

    거듭 감사드립니다.

  • 안녕하세요?

    다시 확인해보니 여전히 first_name은 이메일로 들어오고 있는데요.

    어디를 손보면 가능할까요? 

     

    $profile->first_name = isset($data->response->name)?$data->response->name:'';를 추가했는데 이는 효과가 없네요..

    조금 더 부탁드릴께요

     

    감사합니다.

  • 안녕하세요.

    display_name 필드에는 정상적으로 네이버 쪽 이름이 입력되고 있는지요?

    기존의 테마 쪽 functions.php 파일에 추가하신 cosmosfarm_members_social_login_callback 코드 대신

    아래의 코드로 교체해보서도 확인해보시겠어요?

    add_action('user_register', 'my_user_register', 10, 1);
    function my_user_register($user_id){
    	$user = new WP_User($user_id);
    	update_user_meta($user_id, 'first_name', $user->display_name);
    }

     

    만약, 위의 코드로도 정상적으로 동작하지 않는다면

    저희 고객지원 쪽 이메일로 워드프레스 관리자 계정과 FTP 접속 정보를 보내주시면 점검해드리겠습니다.

    고맙습니다.

  • 안녕하세요?

     

    여전히 적용되지는 않네요.. 몇가지 테스트를 더 해보겠습니다

     

    감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기