안녕하세요? 자주 질문을 드립니다.
네이버 소셜로그인 사용 시 이름이 오지 않는데요.
네이버에서는 회원이름, 이메일, 프로필사진을 가져오도록 되어 설정했습니다.
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 접속 정보를 보내주시면 점검해드리겠습니다.
고맙습니다.
안녕하세요?
여전히 적용되지는 않네요.. 몇가지 테스트를 더 해보겠습니다
감사합니다.