안녕하세요.
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하고 아니면 프로필 정보 가져온곳에서 회원가입을 시켜주면 됩니다.
감사합니다.
궁금하신거는 댓글 달아주세요^^.
'php' 카테고리의 다른 글
네이버 SNS 로그인(PHP) 구현하기. (0) | 2019.12.26 |
---|---|
그누보드/영카트에서 session 공유하기(새로운 php script) (0) | 2019.12.23 |
다중 배열에서 key로 정렬하기(php array_multisort ) (0) | 2018.02.20 |
LDAP 클라이언트와 서버 연결 방법(1) (0) | 2018.01.05 |
영카트에 페이팔 연동 - 실시간 환율 적용 (5) | 2017.12.20 |