Notice
Recent Posts
Recent Comments
Tags
- php 캐쉬제거
- 말줄임표시
- jquery 바코드
- 404에러페이지
- javascript redirection
- 강제이동
- ViewBag
- TempData
- XSS PHP
- SSD 복사
- XSS방어
- ViewData
- django 엑셀불러오기
- 하드 마이그레이션
- 파일업로드 체크
- 바코드 스캔하기
- Mac Oracle
- asp.net dropdownlist
- javascript 유효성체크
- jquery 바코드생성
- 타임피커
- javascript 바코드 생성
- 하드 윈도우 복사
- 파일업로드 유효성체크
- 맥 오라클설치
- 바코드 생성하기
- asp.net core Select
- ASP.Net Core 404
- javascript 바코드스캔
- asp.net Select
웹개발자의 기지개
[PHP] 네이버 로그인 구현하기 본문
최초에 네이버 개발자센터에서 로그인하고, 해당 사이트에서 logo 이미지와 각종 설정 작업을 한다.
어플리케이션 이름을 등록하고, 작업환경을 추가하면서,
네이버로그인을 시작할 로그인실제 페이지와 콜백 페이지를 설정해 준다.
필자는 일단 PC웹과 모바일웹 추가지를 설정하였다.
제공정보는 원하는 부분을 체크하도록하자.
Client ID 와 Client Secret 값을 따로 잘 기억해둔다.
연동페이지에서 필요하다.
위와 같이 설정이 끝났으면, 아래의 페이지를 다 작성하고,
검수과정을 거쳐야 한다.
진행 단계 캡처 이미지도 필요하다.
[네이버 로그인 검수 가이드]
developers.naver.com/docs/login/verify/
[ 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