안녕하세요.

 

sns 로그인 기능을 구현하는 경우가 많은데요.

간단하게 카카오톡 로그인 기능을 구현하는 방법을 포스팅 하겠습니다.

 

일단 login 페이지와 callback 페이지가 필요합니다.

"http://test_lee.co.kr 테스트로 넣어드린 도메인입니다. 참고하세요."

1. http://test_lee.co.kr/login.php

2. http://test_lee.co.kr/callback.php

 

로 스크립트 이름을 명시하겠습니다.

1. kakao 개발자 센터 등록 및 key 받기

  1.1. https://developers.kakao.com/apps  접속.

  1.2. 앱 만들기 클릭.

  1.3. 내 어플리케이션 > 카카오 로그인 > 사용자 관리 > ON

  1.4. 수집 목록 체크 (필요한 정보를 체크 하시면 됩니다.)

  1.5. 로그인 Redirect URI에  http://test_lee.co.kr/callback.php 추가

 

2. login.php

 


$restapikey = "내어플리케이션 > 설정 > 일반 > REST API 키 복사"; //rest api key 입력

$callbackUrl = "http://test_lee.co.kr/callback.php"; //call back URL 입력

$kakaoUrl = "https://kauth.kakao.com/oauth/authorizeclient_id=".$restAPIKey."&redirect_uri=".$callbacURI."&response_type=code";

 

<html>

<body>

   <a href="<?=$kakaoUrl?>"> <img src="카카오 로그인 이미지" title="카카오톡 로그인" alt="" style="width:30px"/></a>

</body>

</html>


3. callback.php

 


$returnCode = $_GET["code"]; 
$restAPIKey = "내어플리케이션 > 설정 > 일반 > REST API 키 복사"; 
$callbacURI = urlencode("http://test_lee.co.kr/callback.php"); // 본인의 Call Back URL을 입력해주세요
// API 요청 URL
$returnUrl = "https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=".$restAPIKey."&redirect_uri=".$callbacURI."&code=".$returnCode;

$isPost = false;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $returnUrl);
curl_setopt($ch, CURLOPT_POST, $isPost);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$headers = array();
$loginResponse = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);

$accessToken= json_decode($loginResponse)->access_token; // access token 가져옴

 

//방식은 PHP에서 호출하는 curl_init()도 있고 밑에 방식으로도 가능하다는점 알려드리려고 두 개를 같이 썻습니다.
$curl = 'curl -v -X GET https://kapi.kakao.com/v2/user/me -H "Authorization: Bearer '.$accessToken.'"';
$info = shell_exec($curl);
$info_arr = json_decode($info, true);

//카카오 프로필 정보를 가져옵니다


if ($info_arr['id'] > 0) {   

//해당 아이디값을 정상적으로 가져온다면 디비에 해당 아이디로 회원가입 여부 확인 하여 회원 가입을 하였으면 자동 로그인 구현.

 
   if(이미 가입된 회원이면){
      //자동 로그인
      exit;
    }
$mb_nickname = $info_arr["properties"]['nickname']; 

 

## 개인정보를 더 받는다면 회원가입 페이지로 location하고 아니면 프로필 정보 가져온곳에서 회원가입을 시켜주면 됩니다.

 


감사합니다.

궁금하신거는 댓글 달아주세요^^.

+ Recent posts