2023. 10. 25. 02:26ㆍWEB
1부에서 전체 프로젝트의 구조와 필요 기능에 대해 알아보았습니다.
이번 글에서는 티스토리 인증 API를 활용해 Access Code를 얻고, 이를 관리하는 방법에 대해 알아보겠습니다.
우선 Tistory API를 사용하기 위해서는 APP을 등록하고, API 키를 발급받아야합니다.
아래 링크에서 API 키를 발급받을 수 있습니다.
API 등록 및 키 발급
Tistory
좀 아는 블로거들의 유용한 이야기
www.tistory.com
앱 등록을 시도합니다.
Callback은 나중에 수정될테니 서비스 명, 설명을 간략히 작성합시다.
서비스 URL은 도메인을 기입하거나, 없다면 블로그 url을 기입해도 무방합니다.
이제 인증을 다루기 위한 함수를 만들 차례입니다.
우선 Tistory의 인증 방식을 이해 해야할텐데요
Tistory API 문서를 같이 보시죠
Authorization Code 방식 · GitBook
No results matching ""
tistory.github.io
API 문서를 보면 OAuth 2.0 방식을 사용한다고 적혀있습니다.
예전에 작성했던 인증 관련 글들을 첨부하겠습니다.
2023.01.27 - [WEB] - OAuth 2.0) OAuth 2.0으로 구글 유저 정보 가져오기
OAuth 2.0) OAuth 2.0으로 구글 유저 정보 가져오기
OAuth란? Open Authorization, 외부 어플리케이션에서 다른 서비스를 이용할 때 필요한 인증과 권한 부여를 위한 개방형 표준 프로토콜로 아래 인증과 인가의 차이를 이해하는 편이 좋습니다. 2023.01.23 -
blog.ymon.io
인증 처리 로직 구현
~/oauth/authorize에 client_id와 redirect_uri, response_type을 쿼리로 전송하면 인증 페이지로 이동하게 되고 사용자가 인증하면 redirect_uri의 주소로 Authentication Code를 전송합니다.
이렇게 authorization-code를 받아 처리를 할 수 있는 엔드 포인트를 구현해 App 설정의 redirect_uri에 입력해야합니다.
저는 Cloud Function을 이용했습니다.
def cb(request):
args = request.args
code = args.get('code', None)
code로 들어온 code를 확인해주고, 적절한 예외 처리를 해줍니다.
이 함수의 End-Point가 redirect_uri의 인자로 들어간다고 생각하시고, 아까 앱 등록할 때 비워두었던 Callback란에 넣어줍니다.
이제 OAuth 2.0 플로우에서 Authentication Code의 발급까지 마쳤는데, 이제 이 코드를 통해 실제 API 사용을 위한 Access Token의 발급 과정이 필요합니다.
방금 요청을 통해 얻은 code는 code=부분에 들어가게됩니다.
나머지 인자인 client_id는 APP 등록 시 얻은 App ID, client_Secret 역시 등록하며 얻은 Secret, redirect_uri는 code를 처리할 함수의 End-Point로 넣어주고 grant_type=authorization_code 적어주면 됩니다.
code를 받아서 params를 채우고 /oauth/access_token에 요청을 하면 access_token을 발급받게 됩니다.
저는 이후 요청에서 사용하기 위해 데이터베이스에 저장했습니다..만
아쉬운 점은..
access_token을 발급받는데에는 사용자가 인증 페이지에서 로그인을 해야합니다.
찾아보니 access_token의 만료 기간이 한 달이라고 하지만, refresh_token 등 로그인 이후에 자동으로 토큰을 재발급하는 방법이 구현되어있지 않아 한 달에 한 번은 사용자가 직접 인증 과정을 거쳐야합니다.
이것도 귀찮다면 Selenium을 통해 로그인까지 자동화를 할 수 있으니, 관심 있으신 분은 찾아보시면 좋을 것 같습니다.
OAuth 2.0 플로우에 대한 이해를 돕기 위해 전체 흐름을 시각화해보았습니다.
+ 추가로 저는 토큰을 서버리스 DB인 Cloud SQL을 통해 저장했습니다.
아무리 메모리, CPU 적게 잡고 최대한 비용 낮추어도 cloud functions보다 30배 비용이 더 발생하는데요..
Cloud Storage에 파일로 저장하고 IAM으로 비공개 접근하던가, 아니면 로그인 할 때마다 환경변수를 바꿔주는 편이 훨씬 경제적이라고 생각됩니다.
현명한 판단을 하십시오.. 저처럼 판단미스를 하지 말기 바랍니다.
티스토리 API를 통해 access token을 발급받고 저장하는 방법을 다루어 보았습니다.
포스팅이 도움이 되었다면, 구독해주시고 광고도 좀 구경하셨으면 좋겠습니다.
'WEB' 카테고리의 다른 글
[서비스] AI 요리 블로거 챗종원 개발기 -4 (5) | 2023.10.27 |
---|---|
[서비스] AI 요리 블로거 챗종원 개발기 -3 (2) | 2023.10.26 |
[서비스] AI 요리 블로거 챗종원 개발기 -1 (0) | 2023.10.25 |
[WEB] Jira Automation과 GPT를 활용한 챗봇 프로토타입 개발기 (0) | 2023.10.24 |
[GCP] 초보자를 위한 Cloud Run 설명회 (3) | 2023.10.18 |