こんばんは、エンジニアの眠れない夜です。
Twitter API を使ってアプリを作ったら開発アカウント以外でも動かしたいですよね。
でも、開発アカウント以外アプリを実行するにはアクセストークンが必要です。
「開発用のアカウント以外でアクセストークンってどうやって取得するの…?」
という疑問を解消するためにここでは tweepy を使ったアクセストークンの取得方法をご紹介します。
【Python3】tweepyで認証情報(AccessToken)を取得する方法
tweepyの公式ドキュメントがこちらにあります。そのまま進めていけばいいのですが、Python2だったり、想定している使い方が違うのかいまいち使いづらかったので自分用に書き直してみました。
このスクリプトは Python をコンソール上で実行して、アクセストークン(AccessTokenKey)とアクセスシークレット(AccessTokenSecret) を「コンソール」と「テキストファイル(auth_info.txt)」に出力します。
ユーザーに Web から認証してすぐに使ってもらうにはもうひと手間必要ですが、ひとまずこれでアクセストークン(AccessTokenKey)とアクセスシークレット(AccessTokenSecret)が作成できて、アクセストークンの取得の全体の流れが分かるはずです。
まずは開発用のアカウント以外で動かしてみたい!という方の役に立てるはずです。
使い方は簡単です。たったの2ステップです。
- CONSUMER_KEY と CONSUMER_SECRET を書き換えてコピペで実行。
- URLのパラメータにoauth_verifierが返ってくるのでコピペでコンソールに貼り付けて実行。
これだけで AccessTokenKey と AccessTokenSecret が取得できます。
※ CONSUMER_KEY CONSUMER_SECRET はTwitterのアプリケーションのページで確認。
| import tweepy | |
| import webbrowser | |
| import urllib | |
| CONSUMER_KEY = "*****" | |
| CONSUMER_SECRET = "*****" | |
| def get_oauth_token(url:str)->str: | |
| querys = urllib.parse.urlparse(url).query | |
| querys_dict = urllib.parse.parse_qs(querys) | |
| return querys_dict["oauth_token"][0] | |
| if __name__ == '__main__': | |
| auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) | |
| try: | |
| redirect_url = auth.get_authorization_url() | |
| print ("Redirect URL:",redirect_url) | |
| except tweepy.TweepError: | |
| print( "Error! Failed to get request token.") | |
| oauth_token = get_oauth_token(redirect_url) | |
| print("oauth_token:", oauth_token) | |
| auth.request_token['oauth_token'] = oauth_token | |
| # Please confirm at twitter after login. | |
| webbrowser.open(redirect_url) | |
| verifier = input("You can check Verifier on url parameter. Please input Verifier:") | |
| auth.request_token['oauth_token_secret'] = verifier | |
| try: | |
| auth.get_access_token(verifier) | |
| except tweepy.TweepError: | |
| print('Error! Failed to get access token.') | |
| print("access token key:",auth.access_token) | |
| print("access token secret:",auth.access_token_secret) | |
| with open("auth_info.text",mode="w") as file: | |
| text = "key:{}\nsecret:{}".format(auth.access_token,auth.access_token_secret) | |
| file.write(text) | |
| print("DONE") |
【Python3】tweepyでAccessToken取得までの流れ
簡単に全体の流れを説明すると次のようになります。
1.CONSUMER_KEY CONSUMER_SECRET を使ってリダイレクトURL(認証ページのURL)を作成します。
※ このURLには oauth_token がひっついて返ってきます。
2.URLから oauth_token を取り出して、auth.request_token[‘oauth_token’] にセットします。
4.ブラウザで「認証」すると oauth_verifier というパラメーターがついたURLが返されます。
※ この時リダイレクトされるURLはTwitterアプリケーションを作成した時に設定したページが返されます。
※ リダイレクト先でURLのパラメーターからoauth_tokenとoauth_verifierを取り出すと5番をスキップできるので、Web上でTwitter認証を完結させられます。
5.URLからパラメータの oauth_verifier の値をコピーしてコンソールに貼り付けて実行します。
6.oauth_token と oauth_verifier を使って AccessTokenSecret を作成します。
まとめ
できるようになってしまえばなんてこと無いのですがアクセストークンを発行するまでになかなか時間を要してしまいました…
でも、この記事を読んでくださった方は大丈夫です!上のソースコードをコピペして実行するだけです^^
作成された AccessTokenKey、AccessTokenSecret は一定時間で勝手に更新されないので保存しておいて次回以降使い回すことができます。(auth_info.txt に AccessTokenKey、AccessTokenSecretを保存しています。)
開発用アカウント以外でもTwitter認証を通してアプリケーションの実行ができるようになったのでいろいろ動かして遊んでみてください。
それで楽しいTwitterアプリ開発ライフを!




[…] 【Python3】tweepyで認証情報(AccessToken)の取得方法 […]