この記事では、TwitterAPIでのアクセストークンの取得方法を紹介します。
まだTwitterAPIを使用するための開発者申請をしていない人は以下の記事を参考に申請してみてください。
TwitterAPIを利用するために必要な「Twitter開発者アカウント」(Twitter Developer Account)の取得方法や申請に通過しやすくなる申請文の書き方などを説明します。
記事を見るアプリケーションの作成についてはこちらの記事をご覧ください。
アクセストークンとは、アプリケーションを認証した人としてTwitterにログインするためのものです。
TwitterAPIアプリケーションでログインするためのIDとパスワードみたいに思えばわかりやすいと思います。
アクセストークンにはアクセストークンとアクセストークンシークレットがあります。
この2つをアプリケーションのコンシューマーキーと組み合わせて使うとアプリケーションを通じてユーザーとして操作ができます。
アプリケーションを作成したアカウントのアクセストークンの取得
アプリケーションを作成したアカウントのアクセストークンは簡単に取得できます。
デベロッパーポータルからアプリケーションを選択した後上部にあるKeys and tokensを押してください。
次にAccess Token and SecretをGenerateします。
するとアクセストークンとアクセストークンシークレットが表示されます。
この2つは一度閉じると再び表示させることはできません。
必ず再び確認できる形で保存してください。
もし忘れてしまった場合はRegenerateを押すと再生成することができます。
アプリケーションを作成したアカウント以外のアクセストークンの取得
アプリケーションを作成したアカウント以外でのアクセストークンの取得は少々めんどうです。
少しコードを書く必要があります。今回はPythonでのコードを紹介します。コピペしてそのまま使えます。
このコードを使うためには、アプリケーションのAuthentication settingsからEnable 3-legged OAuthをオフにし、Callback URLsを空白にする必要があります。
必要なライブラリのインストール
pip install oauth2
または、
py -m pip install oauth2
アクセストークンを取得するためのコード
import urllib
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/authorize"
def __init__(self, key, secret):
self.consumer = oauth.Consumer(key=key, secret=secret)
def get_authenticate_url(self):
"""
認証ページのURLを返す
"""
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):
"""
Access Token などの情報が入ったdictを返す
"""
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)
resp, content = client.request(self.REQUEST_TOKEN_URL, "GET")
self.request_token_content = urllib.parse.parse_qs(content.decode())
if __name__ == '__main__':
CONSUMER_KEY = input('CONSUMER_KEY>>>')
CONSUMER_SECRET = input('CONSUMER_SECRET>>>')
input('認証ページをブラウザで開きます。\nEnterキーを押すとブラウザが起動します\n認証が完了したら出てきたPINを入力してください。')
t = TwitterOauth(CONSUMER_KEY, CONSUMER_SECRET)
authenticate_url = t.get_authenticate_url() # 認証ページの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)
print('認証完了')
input('Enterまたは×で閉じる')
これをコピペしてそのまま開いてください。
使い方
実行するとこのような画面が出ます。
コンシューマーキーを入力してEnterを押してください。
そしたら同様にコンシューマーシークレットも入力してEnterを押してください。
その後は画面の指示に従って操作すればアクセストークンを取得できます。