Twitter APIでのアクセストークンの取得方法

この記事では、TwitterAPIでのアクセストークンの取得方法を紹介します。

まだTwitterAPIを使用するための開発者申請をしていない人は以下の記事を参考に申請してみてください。

Twitter開発者アカウント(Twitter デベロッパー アカウント)の申請方法
Twitter開発者アカウント(Twitter デベロッパー アカウント)の申請方法

TwitterAPIを利用するために必要な「Twitter開発者アカウント」(Twitter Developer Account)の取得方法や申請に通過しやすくなる申請文の書き方などを説明します。

記事を見る

アプリケーションの作成についてはこちらの記事をご覧ください。

Twitter APIのアプリケーションの作成方法と設定
Twitter APIのアプリケーションの作成方法と設定

TwitterAPIを利用するためのアプリケーションの作成方法と設定を説明します。

記事を見る
目次
  1. アクセストークンについて
  2. アクセストークンの取得
    1. アプリケーションを作成したアカウントのアクセストークンの取得
    2. アプリケーションを作成したアカウント以外のアクセストークンの取得

アクセストークンについて

アクセストークンとは、アプリケーションを認証した人としてTwitterにログインするためのものです。

TwitterAPIアプリケーションでログインするためのIDとパスワードみたいに思えばわかりやすいと思います。

アクセストークンにはアクセストークンアクセストークンシークレットがあります。

この2つをアプリケーションのコンシューマーキーと組み合わせて使うとアプリケーションを通じてユーザーとして操作ができます。

アクセストークンの取得

アプリケーションを作成したアカウントのアクセストークンの取得

アプリケーションを作成したアカウントのアクセストークンは簡単に取得できます。

デベロッパーポータルからアプリケーションを選択した後上部にあるKeys and tokensを押してください。

アクセストークン1

次にAccess Token and SecretGenerateします。

アクセストークン2

するとアクセストークンアクセストークンシークレットが表示されます。

この2つは一度閉じると再び表示させることはできません。

必ず再び確認できる形で保存してください。

もし忘れてしまった場合はRegenerateを押すと再生成することができます。

アプリケーションを作成したアカウント以外のアクセストークンの取得

アプリケーションを作成したアカウント以外でのアクセストークンの取得は少々めんどうです。

少しコードを書く必要があります。今回はPythonでのコードを紹介します。コピペしてそのまま使えます。

このコードを使うためには、アプリケーションのAuthentication settingsからEnable 3-legged OAuthをオフにし、Callback URLsを空白にする必要があります。

アクセストークン3

必要なライブラリのインストール

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または×で閉じる')
        

これをコピペしてそのまま開いてください。

使い方

実行するとこのような画面が出ます。

アクセストークン4

コンシューマーキーを入力してEnterを押してください。

そしたら同様にコンシューマーシークレットも入力してEnterを押してください。

その後は画面の指示に従って操作すればアクセストークンを取得できます。