본문 바로가기
IT

티스토리 글 가져오기 - API 토큰받기

by SOGNOD 2023. 12. 11.
반응형

티스토리 글 가져오기

 

내 티스토리에 포스팅한 글을 가져오려면 먼저 디스토리 오픈 API를 신청해야 합니다.
아래 티스토리 Open API 사이트에서 앱 등록을 진행 합니다.

https://www.tistory.com/guide/api/manage/register

 

Tistory

좀 아는 블로거들의 유용한 이야기

www.tistory.com

 

오픈 API 앱 등록 방법은?

티스토리 오픈 API 승인 및 사용하기 위해서 3번 인증 과정을 거치게 됩니다.

1. 오픈 API 앱 등록 및 앱 아이디/키 발급
2. 앱 아이디로 인증코드 발급 받기
3. 앱 아디이/키와 발급 받은 인증코드로 엑세스 토큰(Access Token) 받기


 

1. 오픈 API 앱 등록 및 앱 아이디/키 발급

오픈 API 인증코드를 발급 받기위해 필요한 항목은

1.1 오픈 API 이용약관 동의
1.2 구축하려는 자동 포스팅 서비스 명과 약간의 설명이 필요 
1.3 어플리케이션 로고 이미지 (블로그 로고 이미지로도 충분)
1.4 서비스 URL 주소가 필요하지만 여기서는 티스토리 내 블로그 URL 로 진행

 

Open API 앱 등록

- 서비스 URL에는 내 사이트(블로그) 주소를 넣어줍니다.
- CallBack(콜백) URL에도 내 사이트(블로그) 주소를 넣어줍니다.
* URL에 티스토리 블로그주소를 넣은건 웹 브라우저 URL 에서도 리턴되는 값을 확인할 수 있기때문 입니다.

약관 동의 및 정보입력 후 "등록" 버튼을 누르면 바로 앱 아이디와 보안키값이 발급 됩니다.
이 키값은 다음단계 "인증코드" 를 발급받을때 필요합니다.

 

디스토리 오픈 API 앱 아이디/키를 발급 받았으면 화면 오른쪽에 있는 "오픈 API 가이드" 링크를 통해
API 가이드 페이지로 이동 합니다.

https://tistory.github.io/document-tistory-apis

 

소개 · GitBook

No results matching ""

tistory.github.io

 

2. 앱 아이디로 인증코드 발급 받기

티스토리는 주요기능이 포함된 OAuth2.0 기반 Open API를 제공합니다.
보안 프로토콜과 함께 REST방식을 지원합니다.

Authentication Code 방식

 

인증 요청 및 Authentication code 발급

사용자의 티스토리의 데이터 접근을 위해서 사용자에게 티스토리 인증요청을 합니다. 
아래의 URL로 사용자가 접근하도록 하면 인증절차가 진행되며 사용자가 티스토리에 로그인하지 않은 경우 로그인 후에 인증 절차가 진행됩니다.

가이드에 제공된 Authentication code 요청 URL 을 살펴 보겠습니다.

https://www.tistory.com/oauth/authorize?
  client_id={client-id}
  &redirect_uri={redirect-uri}
  &response_type=code
  &state={state-param}

2.1 client_id:
    클라이언트 정보의 Client ID 입니다...라는데?
    앞에서 발급받은 앱 App ID 를 넣어 줍니다...네이밍좀...

2.2 redirect_uri:
    사용자가 인증 후에 리디렉션할 URI입니다.
    클라이언트 정보의 Callback 경로로 등록하여야 하며 등록되지 않은 URI를 사용하는 경우 인증이 거부됩니다.
    앱 등록시 등록한 CallBack URi 를 등록 합니다. (https://ableict.tistory.com)
    리디렉션이 get 방식이라 요청한 웹 브라우저 URL 에서 코드를 확인 할수있습니다.

2.3 response_type:
    항상 code를 사용합니다.

2.4 state: (필수아님)
    사이트간 요청 위조 공격을 보호하기 위한 임의의 고유한 문자열이며 리디렉션시 해당 값이 전달됩니다.
    리턴받은 값을 내가 지정한 후 내가 지정한 코드가 리턴되지 않을 경우
    비정상적인 회신으로 간주하기 위한 코드 입니다.

https://www.tistory.com/oauth/authorize
?client_id=App ID
&redirect_uri=https://ableict.tistory.com
&response_type=code
&state=1

위 예시 코드에 App ID 와 리턴 URL 등을 입력 후
웹 브라우저에 완성된 URL을 복사 후 실행(요청) 합니다.

# 인증이 정상적으로 요청되면 다음과 같이" 기본 정보 접근 권한" 허가를 확인 합니다.
    [허가하기] 를 눌러주면 코드가 리턴 됩니다.

# 아래와 같이 code 가 리턴되면 코드를 복사해 놓습니다.

웹 브라우저 URL 에서 리턴된 code 확인

 

3. 앱 아디이/키와 발급 받은 인증코드로 엑세스 토큰(Access Token) 받기

리디렉션으로 받은 인증코드(authorizationCode)를 토큰으로 교환 받아야 합니다.
다음의 URL을 사용해 발급된 code를 Access Token과 교환합니다. 
이때 Secret Key가 사용되므로 반드시 서버에서 수행해야합니다.

GET https://www.tistory.com/oauth/access_token?
  client_id={client-id}
  &client_secret={client-secret}
  &redirect_uri={redirect-uri}
  &code={code}
  &grant_type=authorization_code

# 매개변수는 다음과 같습니다.

3.1 client_id: 클라이언트 정보의 Client ID 입니다.
3.2 client_secret: 클라이언트 정보의 Secret Key 입니다.
      이 정보는 티스토리와 Client만이 공유해야하며 절대 외부에 공개되면 안됩니다.
3.3 redirect_uri: 인증요청시 사용한 리디렉션 URL로 요청검증을 위해 사용합니다.
3.4 code: 앞에서 리디렉션으로 전달받은 Authentication code 를 등록합니다.
3.5 grant_type: 항상 authorization_code 라고 입력 합니다.

발급요청에 성공한 경우 HTTP 200 응답과 함께 Access Tokend 을 받을 수 있습니다.

{access-token}

 

# 앞에서와 마찬가지로 URL 을 완성 후 웹 브라우저에서 실행(요청) 하면 
# 웹 페이지에 오류가 나옵니다...흠

너무 적당히 하는거 아닌지???

오류가 나는 경우 웹 브라우저 개발자도구(F12)를 열고 > Network 텝으로 이동한 후
브라우저에서 아까 요청했던 URL을  다시 실행합니다.
다시 오류창이 나오면
브라우저 개발자도구 > Network 텝 > Response 에서 엑세스 토큰을 확인할 수 있습니다.

웹 브라우저 개발자도구

흠... 토큰을 제공할 의지가 없는건가?

 

마지막으로 오류 메세지 입니다.

요청 단계마다 리턴되는 파라미터가 다르네요...ㅎ

error={error}&error_description={error-description}

error: 에러코드입니다.
error_description: 에러에 대한 설명입니다.

{redirect-uri}?
  error={error}
  &error_reason={error-reason}
  &state={state-param}

error: 에러 코드입니다. 자세한 내용은 OAuth 2.0 명세에 정의되어 있습니다.
error_reason: 에러에 대한 설명입니다.
state: 인증요청시 전달한 값입니다. 이 값을 통해 요청이 변조되었는지 검사합니다.

앱 등록시 CallBack URI 가 잘못등록된 경우
api.php?error=invalid_request&error_description=Maybe_redirect_uri_was_mismatched

 

본문 내용중 일부는 공식 API 가이드에서 가져왔습니다.
가이드 업데이트 차원에서...ing

반응형