마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 1,580 명 오늘 방문자
  • 2,181 명 어제 방문자
  • 5,192 명 최대 방문자
  • 691,381 명 전체 방문자
  • 2,569 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. PHP
목록으로

네이버 로그인 API(oAuth) 개발

마스터욱 0 241 0 0 2018-08-13 16:45:17

사이트에 유저분들과의 더욱더 쫀쫀한 관계를 유지하고 싶어서이길 개뿔... 글좀 남겨주세욤 ㅠㅠ

 

여튼 이런저런 이유로 인해 우연찮게 사이트에 SNS 로그인 기능 하나쯤은 있었으면 좋겠다는, 순수한? 이유 하나만으로 개발을 시작했습니다.

뭐 거창하게 class 만들고 지지고 볶고 자시고 해도 되겠지만 굳이 그럴필요까지는 못 느끼겠고, 그냥 간단한게 짰습니다.

 

로그인 버튼 만들기

  1. function generate_state() {
  2.     $mt = microtime();
  3.     $rand = mt_rand();
  4.     return md5($mt . $rand);
  5. }
  6.  
  7. $naver_login = array();
  8. $naver_login['client_id'] = "네이버에서 발급받은 클라이언트 key";
  9. $naver_login['client_secret'] = "네이버에서 발급받은 시큐릿 key";
  10. $naver_login['callback'] = "네이버 로그인 api를 처리할 나의 callback url";
  11. $naver_login['apiURL'] = "https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=".$naver_login['client_id']."&redirect_uri=".urlencode($naver_login['callback'])."&state=".generate_state();

네이버 어플리케이션 등록 및 키 발급 : https://developers.naver.com/apps/#/register

위 페이지에서 개발 어플리케이션 등록후, client_id와 client_secret 키를 발급받으면 됩니다.

아 그리고 callback URL 입력하는 부분과 그 밖에 API 설정값들이 있으니 다 집어넣어주세요~ 한글 읽을줄 아시면 다 할줄 알아요 헤헤~

 

위 $naver_login['apiURL'] 을 로그인 버튼 link 로 사용하면 됩니다.

 

그리고 callback url 소스 공개합니다.

  1. $code = $_GET["code"];
  2. $state = $_GET["state"];
  3. $redirectURI = urlencode($naver_login['callback']); // 현재 Callback Url 입력
  4.  
  5. $url = "https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=".$naver_login['client_id']."&client_secret=".$naver_login['client_secret']."&redirect_uri=".$redirectURI."&code=".$code."&state=".$state;
  6. $is_post = false;
  7.  
  8. $ch = curl_init();
  9. curl_setopt($ch, CURLOPT_URL, $url);
  10. curl_setopt($ch, CURLOPT_POST, $is_post);
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  12.  
  13. $headers = array();
  14. $response = curl_exec ($ch);
  15. $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  16. //echo "status_code:".$status_code;
  17.  
  18. curl_close ($ch);
  19.  
  20. if($status_code == 200)
  21. {
  22.     $result = json_decode($response, true);
  23.     $param = array(
  24.         "url"       => "https://openapi.naver.com/v1/nid/me",
  25.         "header"    => array(
  26.             "Authorization: Bearer ".$result['access_token']
  27.         )
  28.     );
  29.     $info = get_curl($param);
  30.     $info_array = json_decode($info, true);
  31.     //print_r2($info_array);
  32.     /*
  33.         //리턴받은 데이터
  34.         Array
  35.         (
  36.             [resultcode] => 00
  37.             [message] => success
  38.             [response] => Array
  39.                 (
  40.                     [id] => 고유아이디값
  41.                     [nickname] => 네이버 닉네임
  42.                     [profile_image] => 네이버 프로필이미지
  43.                     [email] => 네이버 메일
  44.                     [name] => 이름
  45.                 )
  46.  
  47.         )
  48.     */
  49.     $response = $info_array['response'];
  50. }
  51. else
  52. {
  53.     echo "Error 내용:".$response;
  54. }

 

아래는 제가 만든 get_curl 함수입니다.

  1. function get_curl($param)
  2. {
  3.     $ch = curl_init();
  4.  
  5.     #접속할 URL 주소
  6.     curl_setopt($ch, CURLOPT_URL, $param['url']);
  7.  
  8.     #FALSE 를 설정하면 cURL는 서버 인증서의 유효성을 검사하지 않습니다.#다른 인증를 CURLOPT_CAINFO 옵션 지정하거나 CURLOPT_CAPATH 옵션 증명서 디렉토리를 지정합니다.
  9.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  10.  
  11.     #SSL 버젼 지정. 기본값은 2
  12.     #curl_setopt ($ch, CURLOPT_SSLVERSION,1);
  13.  
  14.     #TRUE 를 설정하면 헤더의 내용을 출력합니다.
  15.     #curl_setopt($ch, CURLOPT_HEADER, 1);
  16.  
  17.     #HTTP 요청에서 사용되는 "User - Agent :" 헤더의 내용.
  18.     curl_setopt($ch, CURLOPT_USERAGENT, CURL_AGENT);
  19.  
  20.     if($param['cookie']){
  21.         #curl_close 호출 될 때 쿠키를 파일 이름으로 저장.
  22.         curl_setopt($ch, CURLOPT_COOKIEJAR, CURL_COOKIE);
  23.  
  24.         #쿠키의 데이터를 http 헤더를 통해 보낸다.
  25.         curl_setopt($ch, CURLOPT_COOKIEFILE, CURL_COOKIE);
  26.     }
  27.  
  28.     #POST 로 데이터 전송.
  29.     #TRUE 를 설정하면 HTTP POST를 수행합니다. POST는 application / x - www - form - urlencoded 식으로 이루어집니다. 이것은 일반적인 HTML 양식과 같은 형식입니다.
  30.     if($param['post_data']){
  31.         curl_setopt($ch, CURLOPT_POST, 1);
  32.         curl_setopt($ch, CURLOPT_POSTFIELDS, $param['post_data']);
  33.     }
  34.  
  35.     if($param['header']){
  36.         curl_setopt($ch, CURLOPT_HTTPHEADER, $param['header']);
  37.     }
  38.  
  39.     #최대 실행 시간(초)
  40.     curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  41.  
  42.     #TRUE 를 설정하면 curl_exec () 의 반환 값을 문자열로 반환합니다. 일반적으로 데이터를 직접 출력합니다.
  43.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  44.  
  45.     $result = curl_exec($ch);
  46.     curl_close($ch);
  47.  
  48.     return $result;
  49. }

뭐 간단한게 요약을 하자면,

네이버에서 발급받은 key를 네이버에 던지면, 네이버에서 토큰값을 던져준다. 그럼 그 토큰값을 이용해서 사용자 정보를 호출하면, 사용자 정보 JSON 값을 받아온다.

그럼 JSON 값으로 이제 알아서 하면 된다~ 라는 내용입니다.

 

그런데 본인은 로그인이 되는데, 다른 사람들은 아직 로그인이 안됩니다.

네이버에서 심사를 통과시켜줘야 된대요~

심사기간은 2~3일 걸린다는데 일단 기다려 보겠습니다.

0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
0 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 81
    특정 폴더를 돌면서(하위까지) 이미지 퀄리티 조절하고, 이미지 사이즈까지 조절하는 코드
    마스터욱
    조회수 218   25-04-11 18:31
    마스터욱
    25-04-11 18:31
    218
  • 80
    JSON 데이터 DB에 넣을때, 데이터를 이쁘게 해주는 함수(JSON_PRETTY_PRINT)
    마스터욱
    조회수 189   25-02-08 13:45
    마스터욱
    25-02-08 13:45
    189
  • 79
    PHP 로 웹푸시 만들기
    마스터욱
    조회수 240   23-05-11 22:16
    마스터욱
    23-05-11 22:16
    240
  • 78
    FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of
    마스터욱
    조회수 186   22-12-04 05:36
    마스터욱
    22-12-04 05:36
    186
  • 77
    window apache2 php7 에서 curl 이 인식되지 않을때 해결방법
    마스터욱
    조회수 176   22-08-08 22:41
    마스터욱
    22-08-08 22:41
    176
  • 76
    exec 사용시에 에러확인 방법
    마스터욱
    조회수 167   22-06-23 01:52
    마스터욱
    22-06-23 01:52
    167
  • 75
    리눅스(우분투) 시스템 모니터링 PHP 오픈소스
    마스터욱
    조회수 152   22-01-10 00:27
    마스터욱
    22-01-10 00:27
    152
  • 74
    json_encode 시에 한글이 깨지는 경우 해결방법
    마스터욱
    조회수 180   21-12-23 05:24
    마스터욱
    21-12-23 05:24
    180
  • 73
    exec 사용시, 에러확인 방법
    마스터욱
    조회수 149   21-12-19 16:08
    마스터욱
    21-12-19 16:08
    149
  • 72
    PHP - PDF 파일 만들기
    마스터욱
    조회수 151   21-12-16 11:23
    마스터욱
    21-12-16 11:23
    151
  • 71
    http_build_query 함수에서 배열처리
    마스터욱
    조회수 170   21-12-07 06:10
    마스터욱
    21-12-07 06:10
    170
  • 70
    http 로 접속할 경우, https 로 포워딩 되도록 하는 소스
    마스터욱
    조회수 161   21-11-16 22:57
    마스터욱
    21-11-16 22:57
    161
  • 69
    exec 함수 사용시, 백그라운드에서 명령어 실행하기
    마스터욱
    조회수 179   21-11-10 04:08
    마스터욱
    21-11-10 04:08
    179
  • 68
    크롤링 라이브러리 스누피(Snoopy) 사용시 노하우 팁!
    마스터욱
    조회수 401   21-10-20 02:24
    마스터욱
    21-10-20 02:24
    401
  • 67
    PHP 숫자 0 을 인식하는 방법
    마스터욱
    조회수 232   21-05-27 14:32
    마스터욱
    21-05-27 14:32
    232
  • 66
    텔레그램 채널 알림(푸시) API
    마스터욱
    조회수 153   21-04-08 02:05
    마스터욱
    21-04-08 02:05
    153
  • 65
    [2] apmsetup 대신에 쓸만한 프로그램, 오토셋(Autoset) [2]
    마스터욱
    조회수 179   21-04-07 16:25
    마스터욱
    21-04-07 16:25
    179
  • 64
    jQuery ezPlus 그누보드 상세페이지 이미지에 적용소스
    마스터욱
    조회수 177   21-03-22 16:34
    마스터욱
    21-03-22 16:34
    177
  • 63
    bitmex API - 주문리스트 가져오기(order list)
    마스터욱
    조회수 191   21-01-03 16:31
    마스터욱
    21-01-03 16:31
    191
  • 62
    bitmex API - 주문하기(order)
    마스터욱
    조회수 203   20-12-31 17:11
    마스터욱
    20-12-31 17:11
    203
글쓰기
검색
  • 1
  • 2
  • 3
  • …
  • 5
  • 다음

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...