티스토리 OAuth 인증 with 파이썬 - 로그인 테스트

OAuth 2.0과 티스토리 오픈 API에 대해 아래 글에서 간단하게 정리를 하였다. 즉 티스토리를 PC 앱에서 사용하기 위해서는 Access Token을 발급받아야 한다.

 

티스토리 OAuth 인증 with 파이썬 - 개념

파이썬 기본기를 계속 다지면서 Flask 웹 프레임워크를 보기 시작하였다. 웹 프레임워크를 공부하기 전에 가볍게 OAuth 인증을 익히고 티스토리 Open API를 이용하여 블로그를 백업하는 앱을 만들 생

memories.tistory.com

티스토리 오픈API 사용을 위한 Access Token를 계정별로 자동으로 발급하기 위해 '티스토리 API Access token 자동 받기'를 참고하여 시도하였지만, 티스토리 계정을 카카오 계정으로 통합하였다면 안된다는 결론에 도달할 때까지 삽질을 블로그에 간단히 정리해둔다.

 

내 티스토리 계정은 최근 카카오 계정으로 전환하였고, 이것은 2021년 4월까지 완료해야 하며, 카카오 계정으로 전환하지 않으면 신규 서비스 이용에 제한이 발생할 것이라고 한다. 카카오 계정 전환은 선택이 아닌 의무(필수) 사항이 된 것이므로 대수롭지 않게 생각하여 카카오 계정으로 전환을 하였지만, 이것으로 말이 많은 것 같다. 이것은 다른 포스트로...

 

어쨌든, 아래와 같이 간단하게 티스토리 로그인 및 Access Token를 요청하는 코드를 작성할 수 있다.

import requests

login_url = 'https://www.tistory.com/auth/login'
oauth_url = 'https://www.tistory.com/oauth/authorize'

auth_param = {
    'client_id'    : '<Your App ID>',
    'redirect_uri' : '<Your Callback URL>',
    'response_type': 'code'
}

login_info = {
    'loginId'  : '<Your Tistory ID>',
    'password' : '<Your Password>'
}


def get_access_token():
    with requests.session() as s:
        res = s.post(login_url, data=login_info)
        if res.status_code != 200: print(res, res.url)
        else:
            res = s.get(oauth_url, params=auth_param, allow_redirects=False)
            print(res, res.url)
            ...
            
if __name__ == '__main__':
    get_access_token()

그래서 위 코드는 requests.session으로 세션을 유지한 상태에서 티스토리 로그인 및 access token 요청하는 것이며, 아래 이미지의 로그인 화면은 스킵하고 바로 앱이 티스토리 블로그에 접근 허용여부를 묻는 결과를 오기를 예상하였다.

하지만, 예상과 다르게 티스토리 로그인 URL로 접속하면 아래 이지미와 같이 카카오 계정 로그인 / 티스토리 계정 로그인 선택화면이 출력되며, 카카오 계정으로 전환했다면 카카오 계정으로 로그인을 해야 한다.

그런데, 카카오 계정으로 로그인을 할 경우, '티스토리 API Access token 자동 받기' 코드는 사용이 불가하며, 카카오 오픈API를 사용해서 로그인을 진해야 한다. 여기서부터 삽질과 수렁의 시작이었다.

 

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

카카오 API를 사용하려면 Kakao Developers 가입을 해야하며, 내가 만들 앱의 ID와 Secret Key를 아래 이미지와 같이 발급받도록 한다.

그리고, 내가 만든 앱에서 카카오 계정 로그인 API를 사용하려면 아래와 가티 카카오 로그인을 활성화 시키고, redirect URL을 등록하도록 한다.

위와 같이 설정하고 위 파이썬 코드에서 티스토리 로그인 URL을 카카오 로그인 URL로 변경하고 입력폼의 name이 다르므로 아래와 같이 위 파이썬 코드를 아래와 값으로 변경하였다.

import requests

# login_url = 'https://www.tistory.com/auth/login'
login_url = 'https://accounts.kakao.com/login?continue=https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=<rest key>&redirect_uri=https://memories.tistory.com'

login_info = {
    # 'loginId'  : '<Your Tistory ID>',
    'email'    : '<Your email address>',
    'password' : '<Your Password>'
}

위와 같이 변경하여 티스토리에서 자동으로 했던 것과 동일하게 동작할 것이라고 예상하고, 아래 화면의 html을 받을 것이라고 생각하였지만, 로그인 화면의 로그인 입력폼이 있는 html를 다시 받았다.

즉, 웹을 이용하여 카카오 로그인 API를 사용할 수 있으나, PC 앱(프로그램)이나 모바일 앱에선 REST API를 사용하여 카카오 로그인이 불가능한 것 같다. 웹 지식이 부족하여 아래 카카오 developers 문서를 잘못 이해했을 수 있지만, 내가 이해한 내용은 웹이 아닌 환경에서는 카카오 로그인 API는 사용이 불가한 것 같다.

모바일 앱에선 카카오톡을 이용하는 방식으로 로그인을 할 수 있는 것 같은데, 그것은 나중에 확인해봐야 할 것 같다. 결국 몇 일동안 카카오 로그인을 파이썬 requests 모듈을 콘솔환경에서 해보려고 했는데, 카카오 정책으로 인한 이것은 불가하다는 결론에 도달하였다. 문서를 좀더 찾아보고 웹 관련 지식이 있었다면 좀더 빨리 결론을 도달할 수 있겠지만, 이것도 웹을 하나씩 알아가는 길이라고 생각하고 블로그에 정리해 둔다. 정말 2-3일간 계속 삽질의 연속이었다. 에혀;