thumbnail image

[파이썬] 티스토리 API - 신청 및 Access Token 발급

Taedi

·

2021. 2. 13. 20:32

반응형

티스토리에서 제공하는 API를 이용하면 블로그에 직접 접속하지 않고도 포스트 내용을 조회하거나 글을 작성하고 수정할 수 있습니다. 그러기 위한 기본 단계로 오픈 API를 신청하고 Access Token을 발급받는 과정을 알아보도록 하겠습니다.

 

앱 등록(오픈 API 신청)

아래 링크를 클릭해 신청 페이지로 이동합니다.

 

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

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

 

그리고 아래 사진을 참고하여 내용을 입력하고 등록하면 API를 이용할 수 있는 권한을 얻을 수 있습니다. 테스트 용도라면 URL과 CallBack URI는 블로그 주소 정도로 작성해 주시면 되며, 별도로 프로그램이나 웹서비스를 제작하는 경우라면 저보다 내용을 많이 알고계실테니 생략하도록 하겠습니다.

 

오픈 API 앱 등록 화면

 

올바르게 등록 되었다면 아래와 같이 App ID와 Secret Key를 얻을 수 있습니다. 계속해서 사용해야하니 내용을 별도로 복사하고 다음으로 넘어갑니다. 가령 키를 분실하더라도 사이트를 다시 접속하면 조회 가능하니 걱정하지 않으셔도 됩니다.

 

앱 등록 결과 나타나는 AppID 및 Secret Key

 

Authentication Code 발급

인터넷 주소창에 아래 주소를 '{{{}}}' 부분에 발급받은 AppID와 등록할 때 작성한 CallBack 주소로 바꾸어 입력해주시고 경로로 이동합니다.

({{{##}}}는 지우시면 됩니다.)

 

https://www.tistory.com/oauth/authorize?client_id={{{AppID}}}&redirect_uri={{{CallBack}}}&response_type=code

 

이 때, 티스토리 로그인을 안 했다면 아래와 같이 로그인 화면이 나타납니다. 그럼 로그인을 진행하여 주시면 되며 창이 별도로 나타나지 않는다면 바로 다음 단계로 이동하면 됩니다.

 

티스토리 로그인 페이지

그럼 아래와 같은 화면이 나타나고 허가하기 버튼을 누르면 CallBack 주소로 이동하게 됩니다. CallBack 주소로 블로그 URL을 입력했다면 웹 상에서 본인의 블로그가 표출됩니다.

 

OAUTH 허가 화면

 

그리고 주소창을 보시면 블로그 주소 뒤에 code= 와 $state= 사이에 무수한 숫자와 알파벳이 보이는데  이것이 Authentication Code이니 잘 기록해 두시기 바랍니다. 이 code는 60분간 유효하며 재사용이 불가능하므로 이후 스탭에서 문제가 발생한다면 이 과정부터 다시 시작해야 합니다.

 

주소창에 나타난 코드

 

그럼 이제 Access Token을 얻어 보도록 하겠습니다. 이번에도 {{{}}}부분을 본인의 값으로 변경하고 주소창에 입력해줍니다. 이때 엣지 브라우저 크롬 드라이버 등의 '개발자 도구'를 활성화하고 시도하실 것을 강력히 추천합니다.

 

https://www.tistory.com/oauth/access_token?client_id={{{AppID}}}&client_secret={{{secret_key}}}&redirect_uri={{{callback}}}&code={{{Authentication_code}}}&grant_type=authorization_code

 

왜냐면 이런 오류 페이지가 뜨면 Access code를 확인할 수 없기 때문입니다.

 

오류페이지 발생

그럼.. 다시 Authentication Code부터 받고 개발자 도구 - 네트워크 - 응답 창을 켜놓은 상태에서 주소를 입력하면 Access Token을 확인할 수 있습니다.

 

개발자 도구 네트워크 화면

Access Token까지 얻었다면 API를 사용할 준비가 완료되었습니다. :)

 

 

파이썬 코드

파이썬으로 위의 과정을 조금 단순하게 바꾸어 봤습니다. 완전 자동화는 아니고 Authentication Code는 직접 웹 페이지상에서 복사해서 붙여 넣어 줘야 합니다. 카카오 아이디는 파이썬으로 로그인 구현이 불가하여 그냥 수작업으로 처리하는 걸로 하였습니다. 다행인 건 Access Code는 1회 발급하면 별도로 요청이 없을 시 지속적으로 사용할 수 있는 것으로 보입니다. (기본 정보 항목에 값을 미리 입력해두시면 구동 시에 별도로 입력 요청을 받지 않습니다. 🐶)

 

import requests, webbrowser

# 기본 정보 입력
appid = ''
secret_key = ''
callback_uri = ''

# 체크
if appid == '':
    appid = input("AppID를 입력해 주세요 : ")
if secret_key == '':
    secret_key = input("secret_key를 입력해 주세요 : ")
if callback_uri == '':
    callback_uri = input("callback_uri를 입력해 주세요 : ")

# authentication_code 얻기
url = 'https://www.tistory.com/oauth/authorize?client_id=' + appid + '&redirect_uri=' + callback_uri + '&response_type=code'

webbrowser.open(url)

authentication_code = input("웹에서 얻은 code를 붙여 넣어주세요 : ")


# access_code 얻기
url = 'https://www.tistory.com/oauth/access_token'

params = {
    'client_id': appid,
    'client_secret': secret_key,
    'redirect_uri': callback_uri,
    'code': authentication_code,
    'grant_type': 'authorization_code'
}

res = requests.get(url, params=params)

if res.status_code == 200:
    print(res.text.replace('access_token=',''))
else:
    print(res)
반응형

티스토리 아이디로 코멘트를 남기려면

여기를 눌러주세요!

닫기 아이콘
사이드 프로필 배경이미지
아바타 이미지

Taedi's Log

#태디 #코딩린이

자습한 내용을 기록하는 공간이라 다소 먼 길로 돌아가는 방법들이 존재할 수 있습니다🐹 Python, Web에 관심을 갖기 시작했습니다🐶