前回の記事では、Twitter OAuth認証を行うための設定までを説明しました。今回は認証を終えた後の処理について、OAuth認証したユーザがフォローとリツイートを自動で行うところまでを説明したいと思います。
OAuth認証後の処理(サンプル)
今回、説明のサンプルとして行う内容としては以下の通りです。
- Twitter認証したユーザ情報を取得
- 次回ログイン認証(ログイン状態を保持)
- Twitter認証したユーザでフォロー&リツイート
Twitter認証したユーザ情報を取得
Twitter認証した後、callbackに指定したURLにリダイレクトしますので、callbackでは認証したTwitterユーザからユーザ情報を取得する方法を説明します。
from urllib.parse import parse_qsl
from requests_oauthlib import OAuth1Session
@app.route('/')
def index():
return render_template("index.html")
@app.route('/callback')
def callback():
oauth_token = request.args.get('oauth_token')
oauth_verifier = request.args.get('oauth_verifier')
twitter = OAuth1Session(
API_KEY,
API_KEY_SECRET,
oauth_token,
oauth_verifier,
)
#oauth_tokenからユーザのaccess_tokenを取得
access_token_url = 'https://api.twitter.com/oauth/access_token'
response = twitter.post(access_token_url, params={'oauth_verifier': oauth_verifier})
access_token = dict(parse_qsl(response.content.decode("utf-8")))
次回ログイン認証(ログイン状態を保持)
一定期間はログイン状態を保持してログインを簡略化する方法を紹介します。取得したユーザのaccessトークンをsessionに保存しておき、次回ログイン時に認証しなくても良いようにします。
def index(): # セッションの有無によって画面を制御 if 'user_name' in session: return redirect('/user') else: return render_template("index.html")
@app.route('/callback') def callback():
access_token = dict(parse_qsl(response.content.decode("utf-8")))
# 返された情報をSessionに保存する session['user_name'] = access_token['screen_name'] session['user_id'] = access_token['user_id'] session['oauth_token'] = access_token['oauth_token'] session['oauth_token_secret'] = access_token['oauth_token_secret']
Twitter認証したユーザでフォロー&リツイート
最後に認証したユーザ情報を利用して、フォローやリツイートをする方法を紹介します。この方法を利用すればログインしたユーザで自由にフォローやリツイートするシステムを構築することが可能となります。Twitter制御にはpythonライブラリのtweepyを利用しています。
import tweepy
API_KEY = "TWitterアプリで取得したKEY"
API_KEY_SECRET = "TWitterアプリで取得したSECRET_KEY"
# ユーザの情報
access_token = session["oauth_token"]
access_token_secret = session["oauth_token_secret"]
username = session['user_name']
# ユーザのアクセストークンでAPIを利用できるように設定
auth = tweepy.OAuthHandler(API_KEY, API_KEY_SECRET)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
# フォロー
user_id = "フォローしたいユーザのID"
api.create_friendship(user_id)
# リツイート
tweet_id = "リツイートしたいツイートのID"
api.retweet(tweet_id)
最後に
今回、2回に渡りTwitter認証の使い方を紹介しました。説明が不十分なところもあるかと思いますが、参考にして頂ければ良いと思っています。
最後に今回Twitter認証を使って、「TWitter懸賞自動応募システム」を作成しました。
このようなことも出来ますよっと参考になれば、幸いですしシステムを使って懸賞に当たればもっとハッピーになれます。興味があれば以下のURLからアクセスしてみてください。