편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.04.12

    네아로(네이버아이디로 로그인하기) php연동 callback 값에서 access token 추출하기


    안녕하세요 ^ ^ php로 만들고 있는 사이트가 있는데요 네이버 아이디로 로그인하기 버튼을 삽입해 보려고 합니다

    네이버 개발자 센터에서 php 소스로 연동하는는 예제가 있더라구요

    예제1 -네이버 로그인 접근토큰 요청

    네이버 로그인 접근토큰 획득 예제는 2개의 파일로 구성되어 있습니다. (naverlogin.php, callback.php)
    1. naverlogin.php
    <?php
      // 네이버 로그인 접근토큰 요청 예제
      $client_id = "YOUR_CLIENT_ID";
      $redirectURI = urlencode("YOUR_CALLBACK_URL");
      $state = "RAMDOM_STATE";
      $apiURL = "https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=".$client_id."&redirect_uri=".$redirectURI."&state=".$state;
    ?><a href="<?php echo $apiURL ?>"><img height="50" src="http://static.nid.naver.com/oauth/small_g_in.PNG"/></a>
    
    2. callback.php
    <?php
      // 네이버 로그인 콜백 예제
      $client_id = "YOUR_CLIENT_ID";
      $client_secret = "YOUR_CLIENT_SECRET";
      $code = $_GET["code"];;
      $state = $_GET["state"];;
      $redirectURI = urlencode("YOUR_CALLBACK_URL");
      $url = "https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=".$client_id."&client_secret=".$client_secret."&redirect_uri=".$redirectURI."&code=".$code."&state=".$state;
      $is_post = false;
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_POST, $is_post);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $headers = array();
      $response = curl_exec ($ch);
      $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      echo "status_code:".$status_code."
    ";
      curl_close ($ch);
      if($status_code == 200) {
        echo $response;
      } else {
        echo "Error 내용:".$response;
      }
    ?>
    
    

    요 소스를 적용하는 callback 주소로 설정해 놓은 파일에서 아래와 같은 값이 출력이 되었습니다

    이미지 여기까지는 되었는데요

    callback 으로 받은 값에서 access_token 값을 변수에 담아서 사용하는 과정에서 어려움을 격고 있습니다 또다른 예제인데요

    예제2- 회원프로필 조회

    // 네이버 API 예제 - 회원프로필 조회
    <?php
      $token = "YOUR_ACCESS_TOKEN";
      $header = "Bearer ".$token; // Bearer 다음에 공백 추가
      $url = "https://openapi.naver.com/v1/nid/me";
      $is_post = false;
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_POST, $is_post);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $headers = array();
      $headers[] = "Authorization: ".$header;
      curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
      $response = curl_exec ($ch);
      $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      echo "status_code:".$status_code."<br>";
      curl_close ($ch);
      if($status_code == 200) {
        echo $response;
      } else {
        echo "Error 내용:".$response;
      }
    ?>
    

    제 생각에는
    예제1에서 받은 내용중에 access_token 값을 추출해서 $token이라는 변수에 담고 $_SESSION으로 보내서 예제2 회원프로필 조회에서 받아서 정보를 조회하면 될것 같은데요

    과정중에 예제1에서 받은 내용중에 access_token 값을 추출해서 $token이라는 변수에 담아서 $_SESSION으로 보내서

    를 어떻게 코드로 짜야 할지 모르겠습니다

    네이버 개발자센터에 참고할 글들이 많길래 금방될줄 알았는데 이틀째 끙끙거리고 있네요 ^ ^ 읽어주셔서 감사합니다