안녕하세요.
이번에는 네이버 SNS 로그인 구현 방법을 알려드립니다.
카카오톡이나 네이버나 똑같이 login.php, callback.php가 필요합니다.
만약 제 블로그에있는 카카오톡 로그인으로 구현하였다면 네이버도 금방 되실거에요.
* 스크립트 이름을 명시하겠습니다.
1. http://test_lee.co.kr/login.php
2. http://test_lee.co.kr/callback.php
1. 네이버 개발자 센터 등록 및 key 받기
1.1. https://developers.naver.com/main/ 접속.
1.2. 상단에 어플리케이션 > 어플리케이션 등록 클릭.
1.3. 어플리케이션 이름과 사용 API를 네이로 클릭.
1.4. 제공 정보 선택에 체크 (필요한 정보를 체크 하시면 됩니다.)
1.5. 환경에는 PC웹을 선택.
1.6. 서비스 URL http://test_lee.co.kr/
1.7. 로그인 Callback URL에 http://test_lee.co.kr/callback.php 추가
2. login.php
define('NAVER_CLIENT_ID', '내어플리케이션 > 어플리케이션 정보 > Client ID');
define('NAVER_CLIENT_SECRET', '내어플리케이션 > 어플리케이션 정보 > Client Secret');
define('NAVER_CALLBACK_URL', 'http://test_lee.co.kr/callback.php);
$naverUrl = "https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=".NAVER_CLIENT_ID."&redirect_uri=".urlencode(NAVER_CALLBACK_URL);
<html>
<body>
<a href="<?=$naverUrl ?>"> <img src="네이버 로그인 이미지" title="네이버 로그인" alt="" style="width:30px"/></a>
</body>
</html>
3. callback.php
define('NAVER_CLIENT_ID', '내어플리케이션 > 어플리케이션 정보 > Client ID'');
define('NAVER_CLIENT_SECRET', '내어플리케이션 > 어플리케이션 정보 > Client Secret');
define('NAVER_CALLBACK_URL', 'http://test_lee.co.kr/callback.php');
$naver_curl = "https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=".NAVER_CLIENT_ID."&client_secret=".NAVER_CLIENT_SECRET."&redirect_uri=".urlencode(NAVER_CALLBACK_URL)."&code=".$_GET['code'];
// 토큰값 가져오기
$is_post = false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $naver_curl);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
if($status_code == 200){
$responseArr = json_decode($response, true);
// 토큰값으로 네이버 회원정보 가져오기
$headers = array( 'Content-Type: application/json', sprintf('Authorization: Bearer %s', $responseArr['access_token']) );
$is_post = false;
$me_ch = curl_init();
curl_setopt($me_ch, CURLOPT_URL, "https://openapi.naver.com/v1/nid/me");
curl_setopt($me_ch, CURLOPT_POST, $is_post );
curl_setopt($me_ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($me_ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec ($me_ch);
curl_close ($me_ch);
$res_data = json_decode($res , true);
if ($res_data ['response']['id']) {
//해당 아이디값을 정상적으로 가져온다면 디비에 해당 아이디로 회원가입 여부 확인 하여 회원 가입을 하였으면 자동 로그인 구현.
if(이미 가입된 회원이면){
//자동 로그인
exit;
}
}
## 개인정보를 더 받는다면 회원가입 페이지로 location하고 아니면 프로필 정보 가져온곳에서 회원가입을 시켜주면 됩니다.
감사합니다.
궁금하신거는 댓글 달아주세요^^.
'php' 카테고리의 다른 글
카카오톡 SNS 로그인 구현하기. (1) | 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 |