風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

GAE上で動作するTwitter用OAuthライブラリソースを公開

まったくデバッグしてませんので注意

【2009/11/19 追記】…というか、デモにはでっかい穴があることに気づく…けどもう眠くてまともに直せない。また後日。→0.01aでちょっと手を入れた、はず。
疲れたのでとりあえず公開。

Google App Engine向け・Twitter OAuthライブラリソース(ZIPファイル・動作デモ付き)

実際動作しているデモは

GAE+Twitter+OAuthのデモ

になります(OAuth認証して、自分のTwitterへステータス投稿)。
以前のものを置き換えました。今度は勝手につぶやいたりフォローしたりはしません(笑)。

ライブラリとしての使い方

  1. app.yamlにハンドラ登録(サンプルソース参照)。
  2. gae_twitoauth.yamlのConsumer key/Secretを、自分でTwitter Application Managementより取得したものに書換え。
    必要に応じて、ConsumerPaths及びApplicationNameも自アプリに併せて設定。
  3. 自分のアプリからは"from GAE_TwitOAuth import GAE_TwitOAuth"として、GAE_TwitOAuthクラスが使えるようにする。
  4. 未認証時は
    twitter=GAE_TwitOAuth() # 引数なし
    login_url = twitter.get_login_url(callback_url=u"http://...") # callback_url:認証後にコールバックされるURLを指定
    のようにして、ログイン用のURLを作成し、ユーザに示してクリックしてもらえるようにしておく。
  5. 認証後に上記で指定したURLにコールバックされたとき、認証成功していると(access token取得出来ていると)、user_idとscreen_nameがクエリとしてくっついてくるので、アプリ側でこれをCookieなどで保存しておく。*1
  6. 認証後は、GAE_TwitOAuth()の引数にuser_idまたはscreen_nameを指定することで(twitter=GAE_TwitOAuth(screen_name='...')またはtwitter=GAE_TwitOAuth(user_id='...'))、作成されたオブジェクト(twitter)のメソッドを使用し、Twitterに投稿等ができるようになる。
    例:(json,status_code) = twitter.update_status(status) # つぶやき投稿
    戻り値はjson(TwitterからのResponseをsimplejson()でdict化処理したもの)とstatus_code(これはそのままTwitterから返されたステータスコード)。
    どんなメソッドが使えるかは……gae_twitoauth.pyのclass GAE_TwitOAuthを参照して下さい*2
  7. 認証情報の削除は、
    logout_url = twitter.get_logout_url(callback_url=u"http://...") # callback_url:認証情報廃棄後にコールバックされるURLを指定
    のようにして得られたログアウト用URLを作製し、ユーザに示してクリックしてもらえるようにしておく。
  8. 認証情報削除後は、コールバック処理(callback_urlで指定したURLでの処理)内にて、(必要に応じて)アプリ側で管理しているセッション情報を廃棄すること。

*1:ライブラリ側ではユーザのセッション管理はしていませんので、これはアプリ側の仕事となります。とりあえず、アプリのサンプル(demo_twitoauth.py) を眺めて下さい。

*2:主要なものは実装したつもりですが、全くテストしてません、悪しからず。たたき台として使って下さい(笑)。