안녕하세요. 소셜로그인 기능 추가 중 문제가 생겨 해결방법을 문의드립니다.
1. email 값 받아오기 문제
현재 최신버전 플러그인이며, Cosmosfarm_Members_API_Naver.class.php 의 public function get_profile() 코드는 아래와 같습니다.
<?php
public function get_profile(){
$profile = new stdClass();
if($this->token){
... 중략
$profile->user_login = isset($data->response->email)?$data->response->email:'';
$profile->email = isset($data->response->email)?$data->response->email:'';
}
return $profile;
}
}
사용자정보 삭제후 몇번을 시도해보았는데, user_login 정보는 naver_xxxxxx 로, email 정보는 빈칸으로 받아와집니다. (네이버쪽 보안설정도 같이 삭제 후 시도하였습니다. 프로필사진 및 대화명은 받아와집니다.)
혹시몰라서 $profile->email 을 $profile->user_email로도 변경해보았는데 마찬가지입니다. WP-members의 메타키는 user_email, username 으로 기본값으로 사용중입니다.
2. 기존 사용자 재 가입시 처리 문제
기존 abc@naver.com 라는 사용자가 있었습니다. (기존 방식으로 가입한 회원) (user 테이블의 user_login 및 user_email = abc@naver.com)
abc@naver.com 사용자가 소셜로그인으로 변경하고 싶어서 소셜로그인을 시도합니다.
그럴 경우, 기존에 있던 user 정보가 업데이트 되지 않고, naver_xxxx 라는 user_login 값을 가진 새로운 사용자가 생성됩니다. (user_email은 빈칸)
이전 관련스레드를 확인하니, 기존 사용자가 소셜로그인할 경우 기존아이디는 유지한채 가입된다고 확인하였는데, 무엇이 잘못된걸까요?
아니면 워드프레스 특성상 동일한 user_login 값을 가질 수 없어 다른 처리방법이 없는 것일까요?
확인 부탁드립니다.
어울러 항상 친절한 답변 감사드립니다.^^
안녕하세요..
네이버 developer 관련글 확인하니, 정책상 @naver 주소를 리턴하지 않고 자주쓰는 이메일을 리턴한다고 하는군요..
자주쓰는 이메일 주소로 등록된 아이디를 삭제하고 가입하니 이메일이 정상출력 됩니다. 위 질문은 모두 해결되었습니다..ㅠㅠ 죄송합니다.
외람된 질문이지만, 다른것 하나만 여쭤봐도 괜찮을지요..
예를들어, abc@naver.com 라는 사용자가 네이버 소셜로그인으로 가입을 했고, 이메일은 abc@gmail.com 으로 반환되었다고 가정하겠습니다.
1) 최초 가입시, 네이버 소셜로그인의 자주쓰던 이메일 값인 abc@gmail.com 으로 인증메일이 발송됩니다.
소셜로그인으로 가입한 경우, 인증메일 발송을 취소할 수 있을까요?
2) 만약 자주쓰던 이메일 abc@gmail.com 이 기존 등록되어있을 경우, 빈칸이 반환됩니다. 이때 2가지 옵션이 있을텐데요.
(a) 기존 사용자 아이디 삭제 후 소셜로그인의 이메일로 등록
(b) 다른 이메일로 등록 (예: def@gmail.com)
(a) 의 경우는 문제가 되지 않지만, (b)의 경우 def@gmail.com 이 실제 존재하는 이메일인지 인증 후 작성하도록 유도하고 싶습니다.
제 생각에는..
1. cosmosfarm_members_send_verify_email 함수를 수정해서, 버튼클릭시 VerifyCode를 생성하여 메일 발송
2. 해당 VerifyCode를 Wait_verfiy_email Key 로 UserMeta에 추가
3. 내정보창에 해당 VerifyCode를 입력하는 Input박스 추가하여 VerifyCode 일치시에 최종저장
하면 되지 않을까 생각되는데요. 절차가 맞는지 모르겠습니다.ㅠ-ㅠ; 실례가 안된다면 코드 작성관련하여 자문을 구해도 괜찮을지요.
Php는 기존 cosmosfarm_members_send_verify_email 를 참고해서 작성하면 될듯 한데, 프론트쪽에서 Input박스를 추가하고 작업하는데에 지식이 부족합니다..
주제넘게 너무 많은걸 여쭤본게 아닌가 생각되네요 ㅠ-ㅠ;;
항상 친절한 답변 감사드립니다.
안녕하세요~^^
이메일의 경우에는 네이버 쪽에서 이메일을 보내줄 때
기본적으로 네이버 내정보에 등록되어 있는 '기본 이메일'을 보내주소 있습니다.
아래의 페이지에서 5. 출력 결과 response/email 쪽을 확인해보시겠어요?
https://developers.naver.com/docs/login/profile/
코스모스팜 회원관리에서 소셜 로그인을 사용하게 되면
사용자이름(아이디)이 아래와 같이 등록됩니다.
1. 이메일이 있다면 이메일을 등록합니다.
2. 똑같은 이메일이 이미 등록되어 있다면, 무작위 이름을 등록합니다.
3. 이메일이 없다면, 무작위 이름을 등록합니다.
소셜 로그인 시 소셜 쪽에서 보내주는 이메일이
워드프레스 사용자로 이미 등록됐을 때 삭제하고 소셜 정보로 다시 회원가입하는 건
좀 더 생각을 해봐야 할 듯합니다.
그럴 경우는 희박하겠지만 소셜 로그인 사용자와 워드프레스 회원가입 기능으로 가입한 사용자가
서로 다를 수도 있기 때문입니다.
현재는 기존 등록된 이메일이 있다면 다른 이메일로 입력하도록 하는 게 좋을 듯합니다.
저희도 좋은 방법이 있을지 연구해보겠습니다.
고맙습니다.