先日、Kay Framework で認証に Twitter の OAuth を使えるようになったので、今度はつぶやきを Twitter に投稿してみた。
Twitter への投稿を urlfetch を使って一から実装するのは面倒なので、 Google App Engine 用の Twitter ライブラリ『AppEngine-OAuth-Library』を使っている。
ここから本題。OAuth でログインしたユーザーのタイムラインにつぶやきを投稿するには、Access Key と Access Key Secret の2つが必要。で、この2つのキーをどうやって取得するかというと、request.user に格納されている GAEMAUser クラスのオブジェクトから取得できる。
Twitter につぶやきを投稿するサンプルがこちら。Twitter への認証が既に終わっていることが前提。
from google.appengine.api import urlfetch from django.utils import simplejson import oauth def post_tweet(request): # Twitter クラアイアントを使う client = oauth.TwitterClient( settings.GAEMA_SECRETS['twitter_consumer_key'], settings.GAEMA_SECRETS['twitter_consumer_secret'], None) # GAEMAUser の raw_user_data からキーを取り出す access_token = request.user.raw_user_data['access_token'] key = access_token['key'] # Access Key secret = access_token['secret'] # Access Key Secret # Twitter でつぶやく内容 params = {"status": request.get('message') } # つぶやきを投稿 url = 'http://twitter.com/statuses/update.json' response = client.make_request(url=url, token=key, secret=secret, additional_params=params, protected=True, method=urlfetch.POST) # エラーが発生していたらログに出力 data = simplejson.loads(response.content) if data.has_key('error'): logging.error(data['error']) return redirect(url_for('core/index'))
raw_user_data は辞書になっていて、いろんなデータが格納されている。何が格納されているか確認するなら、文字列に変換して適当なテンプレートに表示してみるのが手っとり早い。
認証と投稿はできた。タイムラインの取得もたいして難しくないはず。Twitter アプリを作る手段の選択肢として、Kay Framework はかなり有力なんじゃないかな。