주식 데이터 자동 기록 기초 EP01. 구글 클라우드 콘솔 설정 및 블로거 API 연동

목차

 

전일 지수를 매일 새벽마다 체크해야 하는건 당연하다. 그런데 기록하지 않으면 건너뛰는 날이 있게 되기도 하고, 나의 보유 종목이 별 다른 성과를 내지 않는 상태라면 흥미가 줄어 챙겨보는걸 귀찮아하기도 한다. 그래서 나의 생각이 흩어져 관리가 잘 안된다. 머리가 나쁘면 기록을 해야지 하면서 스스로 질책을 하게되어 자동화를 준비하고자 마음 먹었다. 초보자이고, 좌충우돌 하겠지만 그래도 남는게 있지 않을까 싶다.

결론부터 말하자면, 매일 체크해야 하는 동일한 자료들을 하나의 파이썬 마스터 코드로 통합하여 아래의 3가지 채널로 동시에 자동 수신받도록 시스템을 만들 예정이다.

1. 깃허브 액션 ➡ 야후 파이낸스 정보 ➡ 구글 블로거

2. 깃허브 액션 ➡ 야후 파이낸스 정보 ➡ 노션

3. 깃허브 액션 ➡ 야후 파이낸스 정보 ➡ 텔레그램


위 경로에서 깃허브 가입, 노션 API 발급, 텔레그램 봇 토큰, Chat ID 발급은 완료된 상태이다. 이 상황들은 아래 경로로 링크를 남겨두었다.

이 거대한 무인 자동화 기지를 완공하기 위해 총 3부작 시리즈로 나누어 연재할 계획이다. 그 첫 번째 단계인 오늘은 가장 보안 관문이 까다로운 [구글 블로거 API 인증키 발급]과 매번 로그인 없이 프리패스할 수 있는 마스터키(token.pickle)를 내 컴퓨터에 확보하는 과정을 담았다.

시행착오와 해결과정까지 생생하게 남겨놓은 글이니 매끄럽지 않을 수 있다. 그럼 이제 시작해보자.


1. 구글 블로거 API 인증키 발급받기

(1) 아래 버튼을 클릭해 구글 클라우드 콘솔에 접속한다. 

 

프로젝트 만들기

(2) 좌측 상단 '프로젝트 선택' 버튼을 클릭한다.

(3) 작은 창이 열리면 우측 상단 '새 프로젝트'를 클릭한다.

(4) 프로젝트 이름을 입력한 후 아래 만들기 버튼을 클릭한다.


만든 프로젝트로 진입

(5) 우측 상단 알림창이 떠 있다. '프로젝트 선택'을 클릭한다.

(6) 왼쪽 상단의 메뉴(≡) 아이콘을 클릭하여 왼쪽 메뉴를 펼친 후 'API 및 서비스' ➡ '라이브러리'로 이동한다.

(7) 검색 칸에 'Blogger'를 입력하여 검색한다.

(8) 검색되어진 'Blogger API'를 클릭한다.

(9) 파란색 '사용' 버튼을 클릭한다.

(10) 왼쪽 메뉴의 '사용자 인증 정보'를 클릭한다. 

(11) 상단 '애플리케이션에 대한 정보를 포함하여 OAuth 동의 화면을 구성해야 합니다.' 옆 '동의화면 구성' 버튼을 클릭한다.

(12) 화면이 바뀌면 파란색 '시작' 버튼을 클릭한다.

(13) 앱 이름 입력, 사용자 지원 이메일 선택(본인 이메일 선택), 아래 '다음' 버튼을 클릭한다.

(14) 대상 : 필자의 경우 '외부'로 선택해야했다. 선택을 안하면 다음으로 넘어갈 수도 없고, 내부 클릭은 비활성화되어 있었다. 내부는 구글 조직 직원용(?) 뭐 이런거라 하는데 그럼 다행이다. 그리고나서 아래 '다음' 버튼을 클릭했다.

(15) 연락처 정보 : 이메일 주소를 입력한 후  '다음' 버튼을 클릭한다.

(16) 완료 : ✅ Google API 서비스: 사용자 데이터 정책 에 동의합니다. 후 계속 버튼 클릭한다.

(17) 아래 '만들기' 버튼을 클릭한다.


OAuth 클라이언트 ID 생성

(18) 우측에 'OAuth 클라이언트 만들기' 버튼을 클릭한다.

(19) 애플리케이션 유형 선택 : '데스크톱 앱'을 선택한다.

(20) 이름을 입력 후 아래 '만들기' 버튼을 클릭한다.

(21) 작은 창이 뜬다. 아래 '⬇️ JSON 다운로드'를 클릭 한 후 다운로드 되어진 파일을 잘 보관 한 후 하단 '확인' 버튼을 클릭한다.


다운로드 파일이 바로 블로거에 접속하게 해주는 비밀번호 같은 개념이다.



2. 구글 블로거의 관리자 ID 알기

(22) 구글 블로거 관리자 페이지로 이동한다. 

(23) 상단 주소창을 확인한다. 아래처럼 뒤에 있는 숫자들의 블로거의 본인 아이디에 해당된다.

https://www.blogger.com/blog/posts/숫자들


3. 파이썬 준비 및 필수 라이브러리 설치

실전에서는 24시간 가동을 위해 깃허브를 사용할 예정이지만 현재는 수동으로 해야 할 작업이 남아있으므로 파이썬을 이용한다.

파이썬이 실행이 안되거나 설치를 해야 한다면 아래 이전 글 링크를 참고해 설치하면 된다.
'4. 파이썬 설치 및 기본 환경 테스트' 부분을 참고하면 된다.

(24) 바탕화면에 'blog_bot'이라는 이름의 폴더를 만든 후 위 (21)에서 다운로드 받은 긴 이름의 파일을 넣는다.

(25) 이 파일의 이름이 너무 길어서 'client_secret.json' 이라는 이름으로 수정한다. 


구글 API 통신장비 설치

(26) 바탕화면 아래 작업표시줄의 검색 칸에 'CMD'를 입력해 '명령 프롬프트'를 띄운다.

(27) 아래 코드를 복사해 명령프롬프트에 붙여넣기 한 후 엔터를 누른다.

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

 

구글 & 나의 PC 접근 허용 

(28) 새로운 메모장을 열어 아래 코드를 복사해 붙여넣기 한다.

import os
import pickle
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# 블로거 API 접근 권한 설정 (읽기/쓰기 권한)
SCOPES = ['https://www.googleapis.com/auth/blogger']

def get_blogger_service():
    creds = None
    # 기존에 생성된 인증 파일(token.pickle)이 있는지 확인
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    
    # 인증 파일이 없거나 만료된 경우 새로 인증 진행
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            # client_secret.json 파일이 폴더에 있어야 함
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secret.json', SCOPES)
            creds = flow.run_local_server(port=0)
        
        # 인증 정보를 token.pickle 파일로 저장
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)
            
    print("인증 성공! token.pickle 파일이 생성되었습니다.")

if __name__ == '__main__':
    get_blogger_service()

 

(29) 파일 형식 : 모든 파일, 파일 이름 :  auth.py 로 저장한다.

(30) 방금 저장한 auth.py 라는 이름의 파일을 위 (24)에서 만든 'blog_bot'이라는 폴더에 넣는다.

(31) 만들어 둔 'blog_bot' 폴더를 열고, 상단 주소창에 'CMD'를 입력한다.

(32) 새로운 창이 열리면 아래 코드를 복사해 붙여넣기 한 후 엔터를 누른다.

py auth.py


여기서 에러가 떴는데 위의 코드를 입력하니 아래와 같은 글들이 나타났다.

ModuleNotFoundError: No module named 'google_auth_oauthlib'  ➡ 오류


오류 해결하기(라이브러리 설치)

(33) 아래 코드를 복사해 붙여넣기 한 후 엔터를 누른다.

pip install google-auth-oauthlib

 'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. ➡ 오류


(34) 또 오류이다. 아래 코드를 복사해 붙여넣기 한 후 엔터를 누른다.

py -m pip install google-auth-oauthlib

 중간에 노란색 경고(WARNING) 글씨가 떴지만, 맨 아랫줄에 Successfully installed ... google-auth-oauthlib-1.4.0라고 나와있었다. ➡ 성공


(35) 아래 코드를 복사해 붙여넣기 한 후 엔터를 누른다.

py auth.py

 구글 로그인 새로운 창이 자동으로 열린다. ➡ 성공


이메일 미등록 오류 발생 및 해결

(36) 열린 창에서 본인의 구글 계정 로그인을 하면 아래와 같은 문구가 나온다.

액세스 차단됨: (위 20번에서 만든 이름)은(는) Google 인증 절차를 완료하지 않았습니다. ➡ 이 프로그램을 테스트할 수 있는 허락된 사용자 목록"에 필자의 이메일을 등록하지 않아서 생기는 오류이다.


(37) 구글 클라우드 콘솔로 다시 이동한다.

(38) 왼쪽 상단의 메뉴(≡) 아이콘을 클릭 ➡ API 및 서비스 ➡ OAuth 동의 화면을 클릭한다.

(39) 왼쪽 메뉴에서 '대상'을 클릭한다.

(40) 테스트 사용자 아래 ' +Add users' 버튼을 클릭한 다음 구글 계정의 본인 이메일을 입력 후 아래 저장 버튼을 클릭한다.

** 구글 클라우드 콘솔로 로그인할때 사용했던 이메일과 동일하면 된다. 


구글 & 나의 PC 접근 허용 재진행

(41) 위 (31)에서 처럼 만들어 둔 'blog_bot' 폴더를 열고, 상단 주소창에 'CMD'를 입력한다.

실수로 창을 닫았는데 처음부터 다시 해야 하나?  아니다.

구글 콘솔 설정은 이미 서버에 저장되었으므로, 그냥 작업하던 blog_bot 폴더로 가서 상단 주소창에 다시 CMD를 입력해 새 창을 열면 된다. 


(42) 아래 코드를 복사해 붙여넣기 한 후 엔터를 누른다.

py auth.py

 

(43) https://accounts.google.com/...으로 시작하는 긴 주소가 보이고 여러 문장이 쫙 뜬다면 성공이며 자동으로 구글 계정 로그인 창이 열린다. 

(44) 위 (40)번과 같은 구글 계정 이메일로 로그인한다. 

* 구글 클라우드 콘솔 로그인 이메일 = (40) 등록 이메일 = 구글 계정 로그인 이메일 : 동일


(45) 로그인을 하려고 하면 'Google에서 확인하지 않은 앱' 이라는 문구가 뜨는데 아래 '계속'을 클릭하면 된다.

(46) 'Blogger-Automation에서 Google 계정에 대한 액세스를 요청합니다.' 문구가 나타나면 아래 '계속' 버튼을 클릭한다.

(47) 인터넷 창이 하얗게 바뀌면서 영문으로 The authentication flow has completed. You may close this window.라는 문구가 뜬다. 당황하지 말고 창을 닫아도 된다.

(48) 바탕화면에 만들어둔 'blog_bot' 폴더를 보면 'token.pickle'이라는 새로운 파일이 생성되어 있는것을 확인할 수 있다.

이렇게 하면 성공이다. 'token.pickle'이라는 파일은 구글 블로거를 드나들 수 있게 하는 토큰과 같아 아주 중요한 파일이다. 


'token.pickle' 파일 보관시 주의사항

- 다른 폴더로 옮기지 않는다 : 파이썬 프로그램은 반드시 blog_bot 폴더 안에 이 파일이 같이 있어야만 로그인을 패스할 수 있다. (그 자리에 가만히 두는 것이 가장 잘 보관하는 방법이다.)

- 블로그나 인터넷에 절대 업로드 금지 : 나중에 코딩 커뮤니티(깃허브 등)에 내 코드를 자랑하거나 블로그에 파일을 예시로 올리실 때, 이 파일만큼은 절대 첨부하거나 업로드면 안된다. 다른 사람이 이 파일을 가져가면 내 블로그를 마음대로 사용할 수 있게 된다.

- 실수로 지웠을 때 대처법 : 만약 실수로 지우시더라도 컴퓨터가 고장 나는 것은 아니다. 아까 했던 것처럼 CMD 창에서 py auth.py를 쳐서 구글 로그인 인증을 한 번만 더 해주면 구글이 새 마스터키를 즉시 재발급해준다.


 #파이썬자동화 #주식데이터 #구글블로거API #구글클라우드콘솔 #파이썬기초 #파이썬삽질기 #트러블슈팅 #token_pickle #무인시스템구축 #주식기록자동화

댓글

이 블로그의 인기 게시물

학점은행제 아동학 학사 학위 신청 방법, 보육교사 2급 자격증 취득 순서 정리

블로그 작성 시간을 줄이자. 크롬 다크리더 사용 글자색이 회색으로 보이는 방법 해결

유튜브 '나중에 볼 동영상' 10분만에 삭제, 스크립트 붙여넣기 오류 해결 방법