코스모스팜 소셜로그인(카카오) 사용중에 있습니다.
카카오로그인을 이용하여 가입할 시 워드프레스 사용자에 이미 등록된 이메일이면
임의의 아이디를 생성하여 처리하는 걸로 알고 있는대
플러그인 소스중 어떤 파일의 어떤 함수를 사용하여 처리되고 있는지 알 수 있을까요?
그럼 답변 부탁드리겠습니다.
안녕하세요~^^
코스모스팜 회원관리 플러그인에서 소셜 로그인 시
소셜 쪽에서 보내주는 이메일이 이미 워드프레스 사용자로 등록된 이메일일 때
임의의 문자로 변환하는 코드는
FTP로 접속해서 /wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members_Controller.class.php 파일에
아래의 코드를 확인해보시겠어요?
if(!$profile->user_login || username_exists($profile->user_login)){
$profile->user_login = "{$channel}_" . uniqid();
}
고맙습니다.
email의 중복을 처리하려고 했던 상황이라 알려주신 부분의 소스의 밑에 존재하는
이메일 체크부분을 다음과 같이 수정하였습니다.
====================================================
if(!$profile->email || email_exists($profile->email)){
$str = "<script>";
$str .= "alert('{이미 등록된 이메일입니다}');";
$str .= "location.href = '{https://inanana.com/login/}';";
$str .= "</script>";
echo("$str");
exit;
// 무작위 이메일 주소로 회원 등록후, 등록된 이메일을 지우기 위해서 $update_email에 빈 값을 등록해준다.
$profile->email = "{$channel}_" . uniqid() . '@example.com';
$update_email = '';
}
====================================================
추가부분 소스 $str = "<script>";
$str .= "alert('{이미 등록된 이메일입니다}');";
$str .= "location.href = '{https://inanana.com/login/}';";
$str .= "</script>";
echo("$str");
exit;
위와 같이 처리하여 중복이 되는건 방지하고 로그인 페이지로 가게 만들었는대
로그인 페이지에서 다시 회원가입 -> 카카오로그인을 클릭하면 기존 세션값을
물고 있는지 카카오로그인페이지가 아닌 위의 메세지("이미 등록된 이메일입니다")
출력되며 로그인 페이지로 돌아갑니다.
브라우저를 다시 켜서 카카오로그인으로 가면 정상적으로 카카오로그인 페이지로
이동합니다. 브라우저단에서 어떤 정보를 임시저장하고 있는 듯한데 혹시 처리방법이 없을런지요..??
최초 소셜 로그인할 때는 해당 소셜의 로그인 페이지가 표시되며
이후에 로그인할 때에는 소셜에 따라 브라우저에 정보가 있다면
소셜 쪽 로그인 페이지가 표시되지 않고 바로 로그인하게 됩니다.
소셜 로그인 이메일 중복 문제 관련해서는
추후 연구 개발하여 개선해서 업데이트하도록 하겠습니다.
고맙습니다.
그럼 브라우저에서 가지고 있는 소셜(카카오)에 관한 정보를 초기화 하는 방법이 혹시 있을까요?
제가 처리한 건 이메일 중복 체크단계에서 저장이 안되고 바로 로그인 페이지로 보낸 상태입니다.
소셜 정보가 초기화 된 상태로 로그인 페이지로 돌아오게 하는 방법이 알고 싶습니다.
브라우저단에서 소셜 쪽 정보를 초기화하는 건
각 소셜마다 적용 방법이 다르거나 소셜 쪽에서 지원하지 않을 수도 있기 때문에
저희도 좋은 방법이 있을지 찾아봐야 할 듯합니다.
카카오 소셜 로그인 문서는
아래의 링크를 참고해주세요.
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
고맙습니다.