파이썬에서 트위터 계정의 액세스 토큰 획득 반자동화 [OAuth 인증]
12358 단어 트위터파이썬OAuthaccess_token
추가
2018/10/08
이 기사의 방법을 사용하려면 앱 설정에서 Callback URL을 비워야합니다. 비워두지 않으면 앱 인증 후에 PIN이 표시되지 않습니다. (이 정보는 오래되었습니다 2021/03/15 추가)
2021/03/15
이 기사의 방법을 사용하려면 앱 설정에서 3-legged OAuth를 비활성화해야합니다.
그렇지 않으면 앱 인증 후에 PIN이 표시되지 않습니다.
2021/11/29
방치하고 있는 동안에 API 의 사양 변경이 있었던 것 같아, 그것에 의해 움직이지 않게 되어 있던 것을 수정했습니다.
이전
최근, Twitter API의 사용 조건의 엄격화가 화제가 되고 있습니다. API를 사용하려면 개발자 등록이 필요하기 때문에 나도 매우 어려웠습니다.
요 전날 개발자 등록 신청이 무사히 승인되었으므로, Twitter Apps의 재설정 등을 하고 있으면 Access Token의 취득이 번거롭다고 생각 Python으로 자동화하는 것을 생각했습니다.
그러나 완전한 자동화에는 이르지 않고 반자동화가 되어 버렸습니다. PIN 인증 당을 자동화하는 것은 아직 내 실력으로는 할 수 없었습니다.
또한,
를 참고로 했습니다.
필요한 라이브러리
conda에서는 들어 가지 않는 것 같습니다. . .
pip install oauth2
코드
TwitterOauth.pyimport urllib
import json
import webbrowser
import oauth2 as oauth
class TwitterOauth:
REQUEST_TOKEN_URL = "https://api.twitter.com/oauth/request_token"
ACCESS_TOKEN_URL = "https://api.twitter.com/oauth/access_token"
AUTHENTICATE_URL = "https://api.twitter.com/oauth/authenticate"
def __init__(self, key, secret):
self.consumer = oauth.Consumer(key=key, secret=secret)
def get_authenticate_url(self):
self._set_request_token_content()
request_token = self.request_token_content["oauth_token"][0]
query = urllib.parse.urlencode({"oauth_token": request_token})
authenticate_url = self.AUTHENTICATE_URL + "?" + query
return authenticate_url
def get_access_token_content(self, pin):
oauth_token = self.request_token_content["oauth_token"][0]
oauth_token_secret = self.request_token_content["oauth_token_secret"][0]
token = oauth.Token(oauth_token, oauth_token_secret)
client = oauth.Client(self.consumer, token)
body = urllib.parse.urlencode({"oauth_verifier": pin})
resp, content = client.request(self.ACCESS_TOKEN_URL, "POST", body=body)
return urllib.parse.parse_qs(content.decode())
def _set_request_token_content(self):
client = oauth.Client(self.consumer)
body = urllib.parse.urlencode({"oauth_callback": "oob"})
resp, content = client.request(self.REQUEST_TOKEN_URL, "POST", body=body)
self.request_token_content = urllib.parse.parse_qs(content.decode())
if __name__ == '__main__':
###############################################################################
CONSUMER_KEY = "<< your API key >>" # ここに API key を設定する
CONSUMER_SECRET = "<< your API secret key >>" # ここに API secret key を設定する
###############################################################################
t = TwitterOauth(CONSUMER_KEY, CONSUMER_SECRET)
authenticate_url = t.get_authenticate_url()
webbrowser.open(authenticate_url)
print("PIN? >> ", end="")
pin = int(input())
access_token_content = t.get_access_token_content(pin)
access_token = access_token_content["oauth_token"][0]
access_token_secret = access_token_content["oauth_token_secret"][0]
s = "ACCESS TOKEN = {}\nACCESS TOKEN SECRET = {}"
s = s.format(access_token, access_token_secret)
print(s)
사용법
import urllib
import json
import webbrowser
import oauth2 as oauth
class TwitterOauth:
REQUEST_TOKEN_URL = "https://api.twitter.com/oauth/request_token"
ACCESS_TOKEN_URL = "https://api.twitter.com/oauth/access_token"
AUTHENTICATE_URL = "https://api.twitter.com/oauth/authenticate"
def __init__(self, key, secret):
self.consumer = oauth.Consumer(key=key, secret=secret)
def get_authenticate_url(self):
self._set_request_token_content()
request_token = self.request_token_content["oauth_token"][0]
query = urllib.parse.urlencode({"oauth_token": request_token})
authenticate_url = self.AUTHENTICATE_URL + "?" + query
return authenticate_url
def get_access_token_content(self, pin):
oauth_token = self.request_token_content["oauth_token"][0]
oauth_token_secret = self.request_token_content["oauth_token_secret"][0]
token = oauth.Token(oauth_token, oauth_token_secret)
client = oauth.Client(self.consumer, token)
body = urllib.parse.urlencode({"oauth_verifier": pin})
resp, content = client.request(self.ACCESS_TOKEN_URL, "POST", body=body)
return urllib.parse.parse_qs(content.decode())
def _set_request_token_content(self):
client = oauth.Client(self.consumer)
body = urllib.parse.urlencode({"oauth_callback": "oob"})
resp, content = client.request(self.REQUEST_TOKEN_URL, "POST", body=body)
self.request_token_content = urllib.parse.parse_qs(content.decode())
if __name__ == '__main__':
###############################################################################
CONSUMER_KEY = "<< your API key >>" # ここに API key を設定する
CONSUMER_SECRET = "<< your API secret key >>" # ここに API secret key を設定する
###############################################################################
t = TwitterOauth(CONSUMER_KEY, CONSUMER_SECRET)
authenticate_url = t.get_authenticate_url()
webbrowser.open(authenticate_url)
print("PIN? >> ", end="")
pin = int(input())
access_token_content = t.get_access_token_content(pin)
access_token = access_token_content["oauth_token"][0]
access_token_secret = access_token_content["oauth_token_secret"][0]
s = "ACCESS TOKEN = {}\nACCESS TOKEN SECRET = {}"
s = s.format(access_token, access_token_secret)
print(s)
TwitterOauth.py
를 편집하여 Twitter 앱의 API 키와 API secret key를 설정합니다 python TwitterOauth.py
실행 Reference
이 문제에 관하여(파이썬에서 트위터 계정의 액세스 토큰 획득 반자동화 [OAuth 인증]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/s-col/items/4262b21815b09d4b5885텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)