Python/FlaskでTwitterのOAuth認証
はじめに
TwitterによるOAuth認証を使ったアプリケーションを作りたかったので調べてみた。 とはいっても、とりあえず動くものを作るのが最優先なのでOAuth認証は何らかのモジュールに任せる。色々調べてみるとどうやらpythonでOAuth認証をやるなら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だけでなく、GitHubやDropbox、Googleなどのサービスも自由自在にマッシュアップできるようにしておきたい。↓の記事ではRauthを使ってGitHub APIを利用しているようです。