Python/FlaskでTwitterのOAuth認証

はじめに

TwitterによるOAuth認証を使ったアプリケーションを作りたかったので調べてみた。 とはいっても、とりあえず動くものを作るのが最優先なのでOAuth認証は何らかのモジュールに任せる。色々調べてみるとどうやらpythonOAuth認証をやるならRauthというものが良さそうでした。

$ pip install rauth

コード

ググってみたらStack Over Flowにいい感じのコードがあった。

自分が使いやすいように書き換えた↓

ユーザ名の取得

もらったアクセストークンで、verify_credentialsというAPIを叩くとユーザー名を含むユーザー情報を取得できる。

    verify = sess.get('account/verify_credentials.json',
                    params={'format':'json'}).json()
    session['username'] = verify['screen_name']

ツイート

tweetしたいなら、statuses/update.jsonにPOSTしてやる。

    text = 'test tweet'
    response = sess.post('statuses/update.json',
                    data={'status':text}).json()

のように行えばいい。但し、なぜかツイートされなかったのでreponseを見てみたら、↓のように読み込み専用になっていた。

(Pdb) p response
{u'request': u'/1.1/statuses/update.json', u'error': u'Read-only application cannot POST.'}

http://dev.twitter.comからアプリケーションのパーミッションを「Read Only」→「Read and Write」に変更してもう一度やると無事に成功した!


参考

今後はTwitterだけでなく、GitHubDropboxGoogleなどのサービスも自由自在にマッシュアップできるようにしておきたい。↓の記事ではRauthを使ってGitHub APIを利用しているようです。