티스토리 OAuth 인증 with 파이썬 - Access Token 발급 및 API 사용

티스토리 계정을 카카오 계정으로 전환했다면, 내가 알고 있는 지식으론 티스토리 Access Token은 자동으로 발급받을 수 없다는 결론을 내렸다. 그래서 티스토리 오픈API의 Access Token을 발급받으려면 App ID를 포함한 아래의 주소를 브라우저에 입력하도록 한다.

https://www.tistory.com/oauth/authorize?client_id=<App ID>&redirect_uri=https://memories.tistory.com&response_type=code

티스토리 오픈API에서 '앱 등록'을 완료하면 'App ID'과 'Secret Key'을 발급받을 수 있고, 위 주소의 client_id 값에 발급받은 'App ID' 입력하고 redirect_uri로 자신의 callback_url로 설정한 값을 브라우저 주소로 입력하면 아래의 이미지와 같은 결과를 볼 수 있다. 카카오 계정이 로그인되어 있는 상태가 아니면 로그인 화면을 먼저 출력될 것이다.

티스토리 사용자 계정을 'App ID'로 접근을 허용할 경우, 오른쪽 이미지와 같이 callback url로 리다이렉션되며 redirect url 파라미터로 전달된 'code' 및 이미 발급받은 'Secret Key'을 아래의 주소에 적용하여 브라우저에 입력하도록 한다.

https://www.tistory.com/oauth/access_token?client_id=<App ID>&client_secret=<Secret Key>&redirect_uri=https://memories.tistory.com&code=1d363ac44631e3d93505fe1739b382381eb6e3f35ac9f698f66ee59d79999d544e52bf0e&grant_type=authorization_code

이제 파이썬 PC 앱에서 티스토리 오픈API 사용할 수 있는 Access Token을 아래 이미지와 같이 발급 받을 수 있다. 자동으로 발급받을 수 있다면 이런 복잡한 과정은 필요없겠지만... 카카오 정책이니... ;;

이렇게 발급받은 Access Token으로 티스토리 오픈API를 사용하여 블로그 내용을 추가, 삭제 및 업데이트를 브라우저 접속없이 파이썬으로 처리를 할 수 있다.

 

소개 · GitBook

No results matching ""

tistory.github.io

티스토리 오픈API 문서를 참고하여 파이썬으로 티스토리 블로그 정보 및 글을 추가, 삭제 그리고 수정을 할 수 있다. 여기서는 간단히 내 계정에 등록된 블로그 목록과 기억저장소 글 목록을 가져오는 예제를 간단히 코딩하였다.

import requests

def tistory_api(api_name, **para):
    method   = 0  # 0:GET, 1:POST
    params   = {
        'access_token': '<Your Access token>',
        'output'      : 'json'
    }

    if api_name == 'blog_info':
        blog_api = 'https://www.tistory.com/apis/blog/info'
    elif api_name == 'post_list':
        blog_api = 'https://www.tistory.com/apis/post/list'
        
        if not ('blog_name' in para.keys() and 'page' in para.keys()):
            raise KeyError('post_list api must include blog_name and page parameter.')
            
        params['blogName'] = para['blog_name']
        params['page']     = para['page']
    elif api_name == 'post_read':
        blog_api = 'https://www.tistory.com/apis/post/read'

        if not ('blog_name' in para.keys() and 'post_id' in para.keys()):
            raise KeyError('post_list api must include blog_name and post_id parameter.')
            
        params['blogName'] = para['blog_name']
        params['postId']   = para['post_id']
    # elif api_name == 'post_write':
    #     method = 1
    #     # todo 
    # elif api_name == 'post_modify':
    #     method = 1
    #     # todo
    else:
        raise ValueError('{} api does not exist'.format(api_name))

    if method == 0:
        res = requests.get(blog_api, params=params)
    else:
        res = requests.post()

    if res.status_code == 200:
        return res.json()

if __name__ == '__main__':
    json_data    = tistory_api('blog_info')
    
    tistory_info = json_data.get('tistory')
    item         = tistory_info.get('item')
    blog_list    = item.get('blogs')

    for blog in blog_list:
        print('{:<10s} : {}'.format(blog.get('name'), blog.get('url')))

위 코드를 실행하면 아래 이미지와 같이 내 계정에 등록된 블로그 목록이 출력될 것이다.

글 목록을 가져오는 것도 블로그에 정리 하려고 하였으나, 졸려서 이만 줄여야겠다. 여기에 정리된 것을 바탕으로 티스토리 블로그를 백업할 수 있는 PC 앱을 토이프로젝트로 틈틈이 진행할 예정이다.