認証に関するチュートリアル¶
イントロダクション¶
Tweepyはoauth認証をサポートしています。認証はtweepy.AuthHandlerクラスによって処理されます。
OAuth認証¶
TweepyはOAuthを可能な限り簡単にしようとします。またプロセスを開始するにはアプリケーションをTwitterに登録する必要があります。そして新しいアプリケーションを作成してconsumer tokenとsecret keyを取得して下さい。
次のステップでは、OAuthHandlerインスタンスを作成します。先程取得したconsumer tokenとsecret keyを渡して下さい。
auth = tweepy.OAuthHandler(consumer_token, consumer_secret)
もしWebアプリケーションでコールバックURLを使用している場合は、次のように渡します。
auth = tweepy.OAuthHandler(consumer_token, consumer_secret,
callback_url)
コールバックURLが変更されない場合は、twitter.comでアプリケーションのプロファイルを設定するのが最善です。
基本認証とは異なり、APIを使用する前にOAuthの「ダンス」を行わなければなりません。以下の手順を完了する必要があります
- twitterからリクエストトークンを取得する
- twitter.comにリダイレクトしてユーザーにアプリケーションを承認してもらう
- コールバックを使用している場合、twitterはユーザーをアプリケーションにリダイレクトします。それ以外の場合、ユーザーは手動で検証コードを入力する必要があります。
- 承認されたリクエストトークンとアクセストークンを交換します。
ダンスを開始するためにリクエストトークンを取得しましょう
try:
redirect_url = auth.get_authorization_url()
except tweepy.TweepError:
print 'Error! Failed to get request token.'
この呼び出しはtwitterからのトークンを要求し、認証URLを返します。デスクトップアプリケーションの場合、ユーザーが戻ってくるまでOAuthHandlerインスタンスにすがることができます。Webアプリケーションでは、コールバックを利用します。リクエストトークンはコールバックURLリクエストで必要となるため、セッションに格納する必要があります。リクエストトークンをセッションに格納する擬似的な例を次に示します。:
session.set('request_token', auth.request_token)
これで、get_authorization_url()メソッドから先に返されたURLにユーザーをリダイレクトできます。
これがデスクトップアプリケーション(またはコールバックを使用していないアプリケーション)の場合は、twitterが権限を与えた後に提供する「ベリファイアコード」をユーザに問い合わせる必要があります。Webアプリケーションの内部では、この検証者の値は、URLのGETクエリパラメータとして、Twitterからのコールバック要求で提供されます。
# Example using callback (web app)
verifier = request.GET.get('oauth_verifier')
# Example w/o callback (desktop)
verifier = raw_input('Verifier:')
最後のステップは、アクセストークンとリクエストトークンを交換します。アクセストークンは、Twitter APIを使うための「キー」です。このトークンを取得するには、次の操作を行います。
# Let's say this is a web app, so we need to re-build the auth handler
# first...
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
token = session.get('request_token')
session.delete('request_token')
auth.request_token = { 'oauth_token' : token,
'oauth_token_secret' : verifier }
try:
auth.get_access_token(verifier)
except tweepy.TweepError:
print 'Error! Failed to get access token.'
あとで使うため、アクセストークンは保存することをお勧めします。そうすれば再度取得する必要はありません。Twitterは現在トークンに有効期限を設定していません。なのでトークンが向こうになるのはユーザーがアプリケーションアクセスを取り消した場合のみです。アクセストークンを保存するかどうかは、アプリケーションによって異なります。基本的にkeyとsecretを保存する必要があります:
auth.access_token
auth.access_token_secret
これらはデータベース、ファイル、またはこれまでに保存していた場所に投げ込むことができます。この保存したアクセストークンからOAuthHandlerを再構築します。:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(key, secret)
OAuthHandlerにアクセストークンを設定したので準備が整いました。
api = tweepy.API(auth)
api.update_status('tweepy + oauth!')