홈 > 개발가이드 > 샘플 다운로드

개요

OAuth 2.0 인증 기반의 API를 사용하는 방법에 대해 설명합니다. PHP에서도 OAuth 2.0를 위한 라이브러리가 있지만 여기서는 CURL 라이브러리를 사용하여 인증하는 방법을 설명하겠습니다.

PHP 개발 튜토리얼

우선 인증키 신청합니다. 그러면 Key/Secret을 얻을 수 있습니다.

진행순서

1. URL 및 Oauth 정보 설정 2. Request Token 요청 3. Access Token으로 교환 요청 4. Access Token을 싣고 API 호출하면, 보호된 자원으로 접근
URL 및 Oauth 정보 설정

인증키 관리 및 통계에서 Key/Secret, CallBack경로 정보를 확인 후 api.config.php를 작성합니다. 전체 코드는 아래와 같습니다.

api.config.php
<?php
// Request Token 요청 주소
$request_token_url = 'https://api.ecplaza.net/oauth/requestToken';

// Access Token URL
$access_token_url = 'https://api.ecplaza.net/oauth/accessToken';

$oauth_key = '[발급받 apikey의 Key를 넣으세요]';
$oauth_secret = '[발급받 apikey의 Secret을 넣으세요.]';
$callback_url = '[발급받은 apikey의 CallBack경로를 넣으세요.]';

// API prefix (보호된 자원이 있는 URL의 prefix)
$api_url = 'https://api.ecplaza.net/apis/1/';
?>
	
Request Token 요청
index.php
<?php
require_once('api.config.php');

session_start();

// Access Token 정보가 존재하지 않거나 Access Token 정보가 만료되었다면 OAuth 인증 절차 시작
if( ! isset($_SESSION['access_token_info']) || $_SESSION['access_token_info']['expires'] < time())
{
	try {
		$parm = array();
		$parm['client_id'] = $oauth_key;
		$parm['client_secret'] = $oauth_secret;
		$parm['redirect_uri'] = $callback_url;
		$parm['response_type'] = 'code'; // 고정 값 (상수)
	
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $request_token_url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
		// Request Token 요청에서 정상적으로 처리되면 인증키 신청 시 지정한 Callback 경로로
		// Redirect되어 Access Token으로 교환 요청을 합니다.
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
		$res = curl_exec($ch); // 결과 값은 JSON 형식입니다.
		curl_close($ch);
	
		$token_info = json_decode($res, TRUE);
		
		if(isset($token_info['error'])) {
			// Access Token을 얻지 못하고 에러가 발생했을 경우 에러 출력
			echo $token_info['error'] . ' => ' . $token_info['error_description'];
			exit;
		} else {
			// 얻어온 Access Token을 session에 저장
			$_SESSION['access_token_info'] = $token_info;
		}
	} catch(Exception $e) {
		print_r($e);
		exit;
	}
}

$parm = array();
$parm['client_id'] = $oauth_key;
$parm['client_secret'] = $oauth_secret;
$parm['redirect_uri'] = $callback_url;
$parm['access_token'] = $_SESSION['access_token_info']['access_token'];
$parm['q'] = '[검색 옵션을 넣으세요]';	// 검색옵션은 각 API정보를 참고하세요.

$url = $api_url . '/offer';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parm);
$search_res = curl_exec($ch); // 결과 값은 JSON 형식입니다.
curl_close($ch);

$result = json_decode($search_res, TRUE);
if(isset($result['error'])) { // 
		echo $result['error'] . ' => ' . $result['error_message'];
} else {
	if($result['total_count'] > 0) {
		foreach ($result['data'] as $info) {
			foreach ($info as $k => $v) {
				echo $k . ' = ' . $v . '<br/>';
			}
		}
	}
}
?>
	
Access Token으로 교환 요청

Request Token 요청 주소에서 인증키 신청에서 지정했던 Callback 경로로 넘어 갑니다.

api_callback.php
<?php
require_once('api.config.php');

$parm = array();
$parm['client_id'] = $oauth_key;
$parm['client_secret'] = $oauth_secret;
$parm['redirect_uri'] = $callback_url;
$parm['code'] = $_GET['code']; // Request Token 요청 주소에서 얻어온 Request Token입니다.
$parm['api_type'] = 'web'; // 고정 값 (상수)
$parm['grant_type'] = 'authorization_code'; // 고정 값 (상수)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE); // Access Token으로 교환 요청은 POST방식만 지원이 됩니다.
curl_setopt($ch, CURLOPT_POSTFIELDS, $parm);
$res = curl_exec($ch); // 결과 값은 JSON 형식입니다.

// 결과를 출력합니다.
if($res == FALSE) echo json_encode(array('error' => 'curl_failed', 'error_message' => curl_error($ch)));
else echo $res;

curl_close($ch);
?>
	

샘플 소스코드 다운로드

소스코드 형식 다운로드 링크
PHP (WEB용) 다운로드