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

조회수 3373회

안녕하세요 ^ ^ 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으로 보내서

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

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)