Notice
Recent Posts
Recent Comments
Tags
- 404에러페이지
- 하드 마이그레이션
- asp ftp
- django 엑셀불러오기
- asp.net dropdownlist
- 원격ftp
- TempData
- XSS방어
- 바코드 생성하기
- Mac Oracle
- php 캐쉬제거
- swagger 500 error
- asp.net core swagger
- ViewBag
- javascript 바코드 생성
- ASP.Net Core 404
- 맥 오라클설치
- XSS PHP
- SSD 복사
- 타임피커
- ViewData
- asp.net core Select
- JavaScript
- simpe ftp
- 말줄임표시
- javascript redirection
- jquery 바코드생성
- asp.net Select
- 강제이동
- 하드 윈도우 복사
웹개발자의 기지개
[PHP] 네이버 로그인 구현하기 본문
최초에 네이버 개발자센터에서 로그인하고, 해당 사이트에서 logo 이미지와 각종 설정 작업을 한다.
NAVER Developers
네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음
developers.naver.com
어플리케이션 이름을 등록하고, 작업환경을 추가하면서,
네이버로그인을 시작할 로그인실제 페이지와 콜백 페이지를 설정해 준다.
필자는 일단 PC웹과 모바일웹 추가지를 설정하였다.
제공정보는 원하는 부분을 체크하도록하자.



Client ID 와 Client Secret 값을 따로 잘 기억해둔다.
연동페이지에서 필요하다.
위와 같이 설정이 끝났으면, 아래의 페이지를 다 작성하고,
검수과정을 거쳐야 한다.
진행 단계 캡처 이미지도 필요하다.
[네이버 로그인 검수 가이드]
developers.naver.com/docs/login/verify/
네아로 사전 검수 가이드
네아로 사전 검수 가이드
developers.naver.com
[ login.php ] - 로그인페이지 만들기
|
1
2
3
4
5
6
7
8
|
<?
define('NAVER_CLIENT_ID', '클라이언트ID');
define('NAVER_CLIENT_SECRET', '클라이언트Secret');
define('NAVER_CALLBACK_URL', 'http://도메인/callback_member.php');
$naverUrl = "https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=".NAVER_CLIENT_ID."&redirect_uri=".urlencode(NAVER_CALLBACK_URL);
?>
<a href="<?=$naverUrl?>">네이버로그인</a>
|
cs |
[ callback_member.php ] - 콜백처리 페이지
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
<?
session_start();
define('NAVER_CLIENT_ID', '클라이언트ID');
define('NAVER_CLIENT_SECRET', '클라이언트Secret');
define('NAVER_CALLBACK_URL', 'http://도메인/callback_member.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);
/*
{
"resultcode": "00",
"message": "success",
"response": {
"email": "openapi@naver.com",
"nickname": "OpenAPI",
"profile_image": "https://ssl.pstatic.net/static/pwe/address/nodata_33x33.gif",
"age": "40-49",
"gender": "F",
"id": "32742776",
"name": "오픈 API",
"birthday": "10-01"
}
}
*/
if ($res_data ['response']['id']) {
//해당 아이디값을 정상적으로 가져온다면 디비에 해당 아이디로 회원가입 여부 확인 하여 회원 가입을 하였으면 자동 로그인 구현.
include "../inc/config.php";
$query = "select * from 회원테이블 where email='". $res_data ['response']['email'] ."'";
$memRes = mysql_query($query);
$memRow = mysql_fetch_array($memRes);
if($memRow[mno]){ // 이미 가입된 회원이면 자동로그인한다.
$_SESSION[m_id] = $memRow['email'];
$_SESSION[m_name] = $memRow['name'];
$_SESSION[m_level] = $memRow['level'];
echo("<meta http-equiv='refresh' content='0;URL=/'>");
exit;
} else { // 새로 회원가입을 하고 자동로그인추가한다.
$reg_date = time();
$query = "insert into 회원테이블(email,name,naver_id) values ('".$res_data ['response']['email']."','".$res_data ['response']['name']."','".$res_data ['response']['id']."')";
mysql_query($query) or die("Insert error!");
$_SESSION[m_id] = $res_data ['response']['email'];
$_SESSION[m_name] = $res_data ['response']['name'];
$_SESSION[m_level] = '1';
echo("<meta http-equiv='refresh' content='0;URL=/'>");
exit;
}
}
}
?>
|
cs |

'PHP' 카테고리의 다른 글
| [PHP] 웹셀 업로드 취약점 방지하기 - 데이터폴더에 php 실행 막기 (0) | 2021.05.18 |
|---|---|
| [PHP] 구글 캡차(Captcha) 달기 - V3, V2 버전 [자동입력방지] (2) | 2021.04.15 |
| [PHP] 특정폴더의 용량 확인하기 (0) | 2021.01.19 |
| [PHP] 대용량 업로드 설정하기 (0) | 2021.01.07 |
| [PHP] 해당 문자열 있는지 여부 체크, strpos 함수 (0) | 2020.12.25 |
Comments
