[파이썬 활용] 트위터 API 사용하여 트윗 하기

트위터 API를 활용하여 파이썬으로 트윗을 하는 방법

트위터는 페이스북과 더불어 전세계에서 가장 많이 사용하는 SNS 서비스 입니다. 특히 트위터는 전 미국 대통령인 도널드 트럼프와 최근에는 일론 머스크가 애용하는 SNS 서비스입니다. 일론 머스크의 경우에는 트위터를 통해 전세계인들을 농락(?) 하는 것으로 유명합니다.

트위터 애용자중 가장 유명한 사람중에 하나인 일론 머스크. 그는 트위터로 대중을 농락하는 것으로 유명하다.

일론 머스크는 최근에 자주 이용하는 “트위터” 를 인수하겠다고 했다가 번복하는 등의 “쇼”를 보여주기도 했습니다. 그러다 최근에 다시 트위터를 인수하겠다고 했으니 신출귀몰한 행보를 여전히 보여주고 있습니다.

어쨌거나 트위터는 그만큼 대중들에게 가장 익숙한 SNS 서비스 중 하나입니다. 그래서 수많은 유명인들이 트위터를 통해 자신의 근황을 알리거나 의견을 피력하고 있습니다.

저 같은 경우에도 트위터를 통해 코드도사의 글을 홍보하는 용도로 사용중입니다. 저는 트위터에 제 의견이나 생각을 자주 표현하는 편은 아니지만 이제 “차근차근(?)” 제 생각도 트위터를 통해 표현하려고도 합니다.

제 트위터 계정은 코드도사 사이트 하단에 표기가 되어 있으니 팔로우 혹은 리트윗이 가능합니다.

그런데… 최근에 저는 파이선으로 업무 자동화에 대한 관심이 부쩍 생겨났습니다.

그래서 파이썬을 통해 업무 자동화를 활용을 하고 있는 중입니다. 그러다가 웹 서핑 도중 트위터 API를 사용하여 파이썬으로 API 호출을 통해 “트윗”을 하는게 가능하다는 사실을 알게 되었습니다.

트위터 API 호출 + 파이썬으로 트윗이 가능하다면 나름 활용할 만한게 많다는 생각이 들더군요. 그래서 트위터 API 를 통해 파이썬으로 트윗을 날려보는 과정에 대해 설명해 보려고 합니다.

트위터 API 사용을 위한 API Key 발급 하기

트위터 개발자 계정의 레벨

트위터 API를 사용하기 위해서 약간의 공부를 해봤는데요, 생각보다 트위터 API를 사용하기 위해서 API Key 를 발급받는게 까다로웠습니다.

최근 2021년 11월에는 트위터 API를 v2 로 업데이트 했다고 합니다. 그 이후부터는 신규 개발자 계정 승인이 좀더 까다로워졌다고 알려져 있습니다.

위 내용은 트위터의 API 문서에서 발췌한 내용입니다. API v2는 3가지의 레벨이 있는데 가장 승인이 쉬운 레벨은 “Essential” 입니다.

Essential 은 비교적 간단한 절차를 통해 개발자 계정 승인 및 API Key 발급이 가능한데요, 대신에 제한이 있습니다. API를 사용하여 월 최대 50만개의 트윗을 날릴 수 있고 그 이상으로는 불가능합니다. 또한 구현하려는 앱은 프로젝트당 1개로 제한됩니다.

처음에는 저도 트위터 API의 레벨이 별도로 있다는 것을 모르고 검색을 하다가 다른 분들의 가이드를 보고 무작정 “Elevated” 를 승인받으려고 하다가 꽤 까다로운 절차를 밟아야 했습니다. 따라서 간단한 테스트 위주라면 Essential 레벨도 지장이 없을 것으로 생각됩니다.

“Elevated” 레벨은 좀더 제한이 덜합니다. 월 2백만개의 트윗을 API로 날릴 수 있고 프로젝트당 3개의 앱을 구현하는게 가능하네요. 사실 제가 테스트 하거나 쓰기에는 과하지만 일단 “Elevated” 를 멋모르고 승인 절차를 밟았고 결국 승인을 받았습니다^^ 관련해서는 아래에 자세하게 설명드립니다.

마지막으로 “Academic Research” 레벨인데요, 이 레벨은 정말 승인 절차가 까다롭습니다. 월 1000만개의 트윗을 날릴 수 있을 정도로 제한 수준이 높지만 대학이나 학술적 목적으로 사용한다는 증빙 절차를 밟기 때문에 일반 프로그래머들이나 일반인들에게는 승인을 해주지 않습니다.

관련해서 Academic Research 레벨로 승인을 받으려는 한 대학 연구원의 사례를 봤는데 결국 그분도 자신의 신분과 서류 증빙을 했음에도 불구하고 승인을 거절받았다고 하더군요. 결국 “Elevated” 레벨로 승인을 받았다고 합니다. 그만큼 까다로운 듯 합니다.

트위터 API 승인받기

트위터 API 를 사용하려면 먼저 자신이 가입한 트위터 계정이 있어야 합니다. 또한 해당 계정은 이메일과 전화번호 인증이 되있어야 됩니다.

내 트위터 계정에 이메일과 전화 번호 인증이 완료되었으면 하단의 링크로 접속합니다.

그러면 트위터 개발자 인증 절차가 진행됩니다.

여기서 자신의 트위터 계정과 이메일, 거주 국가, 트위터 개발 사용 용도, 정부기관 데이터 제공 등에 선택을 해줍니다. 그런 다음에 “Let’s do this” 버튼을 눌러 다음으로 넘어갑니다.

그럼 위와 같이 개발자 규정 동의 화면이 나타납니다. 아래 체크 표시를 하고 “Submit” 을 눌러서 진행합니다.

그럼 위와 같은 화면이 나타나면서 본인의 이메일 계정으로 확인 메일이 전송되게 됩니다. 그런 다음에 내 메일을 확인하고 나서 인증을 진행해 줍니다.

그럼 위와 같이 나타나는데요, 저는 멋모르고 “Academic Research Product” 라고 했는데 “Essential” 을 승인받기 위해서는 “Academic Reserach Product” 를 선택하면 안될꺼 같습니다. 여기까지 했으면 Essential 레벨은 승인이 나게 됩니다.

그런데 저는 “Elevated” 레벨을 승인 받기로 했기 때문에 “apply for Elevated access” 를 선택했습니다. 해당 문구를 클릭하고 진행합니다.

그럼 위와 같이 개발자 관련 정보들을 입력하는 항목이 나타납니다. 차례대로 입력합니다.

여기서 트위터 API와 트위터 데이터를 어떻게 사용할건지에 대한 계획을 영어로 기술해줘야 합니다. API와 데이터를 어떻게 사용할건지 자세히 적어주는게 좋습니다. 영어로 적어야 해서 다소 불편(?)하긴 하지만 구글 번역 같은 것을 이용하면 쉽게 작성할 수 있습니다.

그 외에 총 3개의 항목에 대한 내용을 영문으로 기술을 해줘야 하는데요, 질문에 대한 답변을 영문으로 잘~ 적어줍니다.

나머지 두개의 항목도 마찬가지입니다.

그런 다음에 넘어가면 위와 같이 Review 화면이 나타납니다. 정보가 잘못되었거나 빠진게 없는지 다시 한번 확인합니다.

마지막으로 개발자 관련 정책 동의에 대한 글을 읽어본 다음에 체크 표시를 하고 “Submit” 버튼을 누르면 트위터 개발자 신청 절차는 마무리가 됩니다.

그럼 위와 같이 내 어플리케이션에 대한 메일을 받았다고 나옵니다. 검토에 약간 시간이 필요하다고 되어 있습니다.(48시간 정도라고 하는데 정확히 언제 올지는 직접 받아봐야 알겠네요) 그리고 메일을 확인해 보니 제 요청에 대한 검토를 진행한다고 합니다. 시간을 두고 메일이 오기까지 기다려야 할꺼 같습니다.

생각보다 메일은 꽤 빨리 도착했습니다. 다음날 오후에 메일이 도착했는데요. 아래 내용입니다.

승인 절차 단계에서 마지막 질문인 “정부와 공공기관에 데이터를 제공” 하는 부분에 대해서 관련 기관의 리스트를 전부 작성하여 답변을 달라는 내용입니다. 헐… 사실 제가 정부나 기관에 트윗 데이터를 제출할 이유는 없는데 검색해서 알아보니 이걸 Yes 라고 체크하라는 분이 있어서 이렇게 했건만. 생각보다 까다롭군요.

해외 유저의 승인 사례를 알아보니 정부 기관에 데이터 제출 항목은 “No” 로 하라고 합니다. 그래서 저는 다음과 같이 메일을 답변으로 보냈습니다.

해당 항목을 “No” 로 처리해 달라고 했습니다. 이제 승인이 나겟지… 했는데 답변이 그날 오후에 금새 왔습니다.

아.. 다른 질문 항목에 대해서 다시 한번 답변을 보내고 심지어는 조금 더 자세하게 적어서 보내달라고 합니다. Elevated 레벨도 생각보다 승인 절차가 까다롭다고 생각이 들었습니다.

그래서 안되는 영어로(구글 번역기 이용) 요구하는 내용에 충실하게 답변을 달아서 메일을 전송했습니다. 그랬더니 다음날…

드디어 승인을 받았네요. 트위터로부터 “Elevated” 레벨 사용 승인이 허가되었다는 메일을 받게 되었습니다. 몇번의 핑퐁 메일를 주고 받고 받은 승인이라 나름 감격스럽습니다.

이렇게 트위터 API v2 레벨중 “Elevated” 레벨도 승인이 나름 까다롭습니다. 트위터 API 사용 승인 절차를 받으시려는 분들에게 참고가 되었으면 합니다.

API 키 발급

자 그럼 마지막으로 트위터 API 사용을 위해 프로젝트 생성 및 API 발급에 대해 알아보겠습니다.

승인 후에 위의 개발자 포털로 접속을 합니다. 그러면 다음과 같은 메인 화면을 볼 수 있습니다.

아직 프로젝트가 생성이 되지 않았기 때문에 “Create Project” 버튼을 눌러 프로젝트를 새로 생성해 줍니다.

프로젝트 이름은 영문으로 적절히 입력해 주고 다음으로 넘어갑니다.

트위터 개발자 플랫폼을 어떻게 쓸건지 선택합니다. 저는 위와 같이 선택을 했습니다. 다음으로 넘어갑니다.

프로젝트의 설명에 대해 기술합니다. 이것도 적절히 입력해 주면 됩니다.

그러면 “앱” 을 새로 생성하는 절차에 들어갑니다. 앱 환경을 위와 같이 선택할 수 있는데 저는 개발 단계이기 때문에 “Development” 를 선택했습니다.

그러면 앱 이름을 입력하라는 항목이 나타납니다. 여기서도 영문으로 앱 이름을 적절히 입력하고 넘어갑니다.

그럼 마지막으로 해당 앱의 “API 키”와 “API Key Secret”, “Bearer Token” 등이 나타나게 됩니다. 이 키를 잘 보관하고 있어야 합니다. 그래야 API 를 호출하여 트윗을 할 수 있게 되니 잘 보관해놓기 바랍니다.

여기까지 해서 API 키를 발급하는 과정이 마무리가 되었습니다.

앱 권한 변경 및 Access Token 값 얻어오기

그런데 마지막 절차가 다시 한번 남아있습니다. 앱 권한 변경 및 Access Token 값을 얻어오는 절차입니다.

생성한 트위터 앱은 기본적은 권한이 “Read Only” 로 되어 있습니다. 트위터 API 를 사용하여 트윗을 날리려면 권한이 Read & Write 로 변경을 해줘야 합니다.

권한을 변경해 주기 위해 프로젝트의 앱에서 “User authentication settings” 항목의 “Set up” 을 클릭해 주세요.

맨 상단에는 앱의 권한을 설정하는 항목이 보입니다. 여기서 Read and Write 를 선택해 줍니다.

다음으로 앱의 타입에 대한 선택입니다. 저는 Web App 이라고 선택을 해줬습니다.

다음으로 앱 정보에 관한 항목입니다. 필수 항목인 Callback URI 와 Website URL 을 입력해 줍니다. 웹사이트 URL은 임의대로 입력해 줘도 무방합니다. 그런 다음 “Save” 버튼을 눌러 저장합니다.

그러면 위와 같이 OAuth 2.0 Client ID와 Client Secret 값이 생성이 됩니다. 이 값도 추후 활용할 수 있으니 잘 저장해놓으면 됩니다.

다음에는 Access Token 값을 얻어오겠습니다.

프로젝트의 화면으로 이동하면 위와 같이 앱의 리스트가 나타납니다. 여기서 오른쪽 끝에 “열쇠” 모양의 아이콘을 클릭합니다.

그러면 위와 같이 API 키들의 설정화면이 나타납니다. 여기서 하단의 “Access Token and Secret” 의 “Generate” 버튼을 클릭하면 Access Token 이 생성됩니다.

이 값들도 잘 저장해 놓고 있다가 API를 호출할때 사용하면 됩니다. 또한 이 값들도 외부에 노출이 되지 않도록 주의해야 됩니다.

여기까지 진행이 되었다면 이제 트위터 API를 사용할 준비를 마친 셈입니다.

트위터 API로 계정 인증 확인

자 그럼 발급받은 API 키들로 트위터 API를 파이썬으로 호출하여 정상동작을 하는지 먼저 확인해 보겠습니다.

# -*- coding: utf-8 -*-

import tweepy

# API Key
API_KEY = ''
API_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

api = tweepy.API(auth)

try:
    api.verify_credentials()
    print("트위터 인증 성공")
except:
    print("트위터 인증 실패")

위 코드는 발급 받은 API 키들을 넣고 tweepy 라는 파이썬 트위터 라이브러리로 인증 성공 여부를 체크하는 코드입니다.

tweepy 가 설치가 안되어 있다면 먼저 아래의 명령어로 설치를 해주세요.

pip install tweepy

저는 위의 코드로 인증이 정상적으로 되는 것을 확인하였습니다.

트위터 API로 트윗 작성해보기

그럼 트위터 API로 트윗을 날려보는 실습을 해보겠습니다.

def post_tweet(contents):
    auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

    api = tweepy.API(auth)
    api.update_status(contents)

위 함수는 tweepy 라이브러를 사용하여 트위터를 날리는 기능을 구현해놓은 함수입니다. 인자의 contents는 실제 트윗의 메시지가 되겠습니다.

실제로 제 계정의 트위터에 트윗이 올라갔을까요?

오호! 실제로도 잘 트윗이 날려지는군요. 파이썬으로 위와 같이 간단한 코드만 가지고도 손쉽게 트윗을 날릴 수 있다니 꽤 흥미롭습니다.

트위터 API로는 이외에도 다양한 트윗의 기능을 사용할 수 있습니다.

위 링크는 어느 해외 블로거의 tweepy 를 사용하여 트위터 각 기능을 설명해놓은 글입니다. 제가 설명한 트윗 외에도 링크, 이미지, 리트윗 등의 다양한 예시가 설명되어 있으니 참고하셔서 응용하셔도 될꺼 같습니다.

'코드도사(codedosa.com)'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.