공개 API의 인증을 위해서 OAuth 2.0 프로토콜 사용을 권장하고 있습니다.
- client_id(회원계정)와 발급받은 client_Secret를 사용하여 서버로 요청하시면, Access_Token을 발급받으실 수 있습니다.
 
- 발급받은 Access_Token은 API 호출 시, HTTP 헤더에 포함되어야 합니다.
 
- 만약 제 3자가 고객님의 client_id와 보안키를 획득하면 보안문제가 발생할 수 있습니다. 따라서 Access_Token은 반드시 서버에서 이뤄져야합니다.
 
1 유효기간
- Access_Token은 1시간, Refresh_Token은 24시간 유효합니다.
 
- Access_Token이 만료되면, Refresh_Token을 사용하여 재발급이 필요합니다.
 
- client_id, client_secret 정보로 재발급시 기존 Token은 사용할 수 없습니다.
 
- API 호출시마다, Access_Token을 새로발급받는 것은 너무 많은 리소스가 사용될 우려가 있습니다.
 
2 OAuth 2.0의 표준 권한 승인 방법
- (a) 서버(Server)와 클라이언트(Client)사이에 인증을 완료하면 권한 부여의 기능을 수행하는 엑세스 토큰*(Access_Token)을 증표로 전달
 
- (b) 클라이언트(Clinet)는 이 엑세스 토큰으로 보호된 자원(Protected Resource)에 접근하거나 서비스를 요청할 수 있음
 
- (c) 자원 서버(Resource Server)는 엑세스 토큰(Access_Token)을 기반으로 권한을 확인 후, 결과를 클라이언트에게 다시 보냄
 
- * 엑세스 토큰(Access Token)
 
- 
보호된 자원에 접근하거나 서비스를 요청할 때, 클라이언트의 권한을 대표하여 확인용으로 사용함.
엑세스 토큰 하나로 계정 인증에 필요한 모든 것들을 확인할 수 있음
 
3 API기본정보
- POST방식을 지원합니다.
 
- 시스템 설정에 따라 GET방식이 가능하나, 보안에 취약하여 권장하지 않습니다.
 
| 메서드 | 
인증 | 
요청URL | 
출력 포맷 | 
설명 | 
| 
POST
 | 
OAuth 2.0
 | 
https://api.goodapi.co.kr/oauth20/token?returnType=json
 | 
json
 | 
접근 토큰발급/갱신/삭제 요청
 | 
| 
POST
 | 
OAuth 2.0
 | 
https://api.goodapi.co.kr/oauth20/token?returnType=xml
 | 
xml
 | 
접근 토큰발급/갱신/삭제 요청
 | 
4 요청변수
| 요청 변수명 | 
타입 | 
필수 여부 | 
기본값 | 
설명 | 
| 
grant_type
 | 
string
 | 
Y
 | 
code
 | 
인증 과정에 대한 구분값  1. 발급:'client_credentials'   2. 갱신:'refresh_token' 3. 삭제: 'delete'
 | 
| 
client_id
 | 
string
 | 
Y
 | 
-
 | 
애플리케이션 등록 시 발급받은 Client ID 값
 | 
| 
client_secret
 | 
string
 | 
Y
 | 
-
 | 
애플리케이션 등록 시 발급받은 Client secret 값
 | 
| 
refresh_token
 | 
string
 | 
갱신 때 필수
 | 
-
 | 
사용자 인증에 성공하고 발급받은 갱신 토큰(refresh token)
 | 
| 
access_token
 | 
string
 | 
삭제 때 필수
 | 
-
 | 
발급받은 접근 토큰으로 URL 인코딩을 적용한 값을 사용
 | 
| 
service_provider
 | 
string
 | 
 | 
GSCMS
 | 
인증 제공자 이름으로 'GSCMS'로 세팅해 전송
 | 
5 출력결과
접근 토근 발급 요청
| 필드 | 
타입 | 
설명 | 
| 
access_token
 | 
string
 | 
접근 토큰, 발급 후 expires_in 파라미터에 설정된 시간(초)이 지나면 만료됨
 | 
| 
refresh_token
 | 
string
 | 
접근 토큰의 타입으로 Bearer 지원
 | 
| 
expires_in
 | 
integer
 | 
접근 토큰의 유효 기간(초 단위)
 | 
| 
R_CODE
 | 
string
 | 
결과 코드
 | 
| 
R_MSG
 | 
string
 | 
결과 메시지
 | 
접근 토근 갱신 요청
| 필드 | 
타입 | 
설명 | 
| 
access_token
 | 
string
 | 
접근 토큰, 발급 후 expires_in 파라미터에 설정된 시간(초)이 지나면 만료됨
 | 
| 
token_type
 | 
string
 | 
접근 토큰의 타입으로 Bearer 지원
 | 
| 
expires_in
 | 
integer
 | 
접근 토큰의 유효 기간(초 단위)
 | 
| 
R_CODE
 | 
string
 | 
결과 코드
 | 
| 
R_MSG
 | 
string
 | 
결과 메시지
 | 
접근 토근 삭제 요청
| 필드 | 
타입 | 
설명 | 
| 
access_token
 | 
string
 | 
삭제 처리된 접근 토큰 값
 | 
| 
result
 | 
string
 | 
처리 결과가 성공이면 'success'가 리턴
 | 
| 
expires_in
 | 
integer
 | 
접근 토큰의 유효 기간(초 단위)
 | 
| 
R_CODE
 | 
string
 | 
결과 코드
 | 
| 
R_MSG
 | 
string
 | 
결과 메시지
 | 
6 OAuth응답코드
OAuth관련 응답코드입니다.
| HTTP 코드 | 
결과 코드 | 
결과 메시지 | 
조치 방안 | 
| 
200 | 
0000 | 
정상처리 | 
요청에 대한 정상처리 | 
| 
401 | 
@024 | 
Authentication failed / 인증에 실패했습니다. | 
 | 
| 
401 | 
@028 | 
Authentication header not exists / OAuth 인증 헤더(authorization header)가 없습니다. | 
 | 
| 
403 | 
@403 | 
Forbidden / 호출 권한이 없습니다. | 
API 요청 헤더에 클라이언트 ID와 Secret 값을 정확히 전송했는지 확인해보시길 바랍니다 | 
| 
404 | 
@404 | 
Not Found / 검색 결과가 없습니다 | 
- | 
| 
405 | 
@405 | 
HTTP 메서드를 잘못 호출한 경우. POST 방식으로 호출해야 하는데 GET 방식으로 호출한 경우 등입니다 | 
허용하는 HTTP 메서드를 확인합니다. | 
| 
500 | 
@500 | 
Internal Server Error / 데이터베이스 오류입니다. | 
서버 내부 에러가 발생하였습니다. 포럼에 올려주시면 신속히 조치하겠습니다. | 
7 예시
요청 예시
[POST]https://api.goodapi.co.kr/oauth20/token?returnType=json
접근 토큰 발급 요청
{
    "grant_type":"client_credentials"
    "client_id":"jyvqXeaVOVmV"
    "client_secret":"527300A0COq1XV33cf"
    "service_provider":"GSCMS"
}
접근 토큰 갱신 요청
{
    "grant_type":"refresh_token"
    "client_id":"jyvqXeaVOVmV"
    "refresh_token":"vnxzP22RgbQgbNeEMDdD5dSPKGM"
    "service_provider":"GSCMS"
}
접근 토큰 삭제 요청
{
    "grant_type":"delete"
    "client_id":"jyvqXeaVOVmV"
    "access_token":"d30C9mWef2g5H1Y4QjVQzFWzG8vMsQwIaC1fmYxHyI"
    "service_provider":"GSCMS"
}
응답 예시
접근 토큰 발급 요청
{
    "access_token":"d30C9mWef2g5H1Y4QjVQzFWzG8vMsQwIaC1fmYxHyI",
    "refresh_token":"vnxzP22RgbQgbNeEMDdD5dSPKGM",
    "token_type":"bearer",
    "expires_in":"3600"
}
접근 토큰 갱신 요청
{
    "access_token":"wGijpi0NkhQfoR8CB46xkUxAUtcpACQEtfQROn3QTx4",
    "token_type":"bearer",
    "expires_in":"3600"
}
접근 토큰 삭제 요청
{
    "access_token":"d30C9mWef2g5H1Y4QjVQzFWzG8vMsQwIaC1fmYxHyI",
    "result":"success"
}