2011年1月2日日曜日

oauth-python-twitterのパッチ

MyBike.JPではTwitterの連携にoauth-python-twitterを使っています。このライブラリを使うと容易にTwitter OAuth連携が作ることが出来ます。

しかし、開発環境などで別のドメインを使っている場合に、コールバック先URLを変更できない問題がありました(ちなみに、MyBike.JPでは商用環境がhttp://mybike.jp, 開発環境は主にhttp://localhost:8000で行っています)。

リクエストトークン取得部分に以下のようなパッチを当てて、コールバックURLを直接指定することで任意のURLへリダイレクトしています。

--- __init__.py-orig 2011-01-02 01:01:08.000000000 +0900
+++ __init__.py 2011-01-02 01:01:24.000000000 +0900
@@ -192,13 +192,14 @@
token = self._FetchUrl(url, no_cache=True)
return oauth.OAuthToken.from_string(token)

- def getRequestToken(self, url=REQUEST_TOKEN_URL):
+ def getRequestToken(self, url=REQUEST_TOKEN_URL, oauth_callback_url=None):
'''Get a Request Token from Twitter

Returns:
A OAuthToken object containing a request token
'''
- resp = self._FetchUrl(url, no_cache=True)
+ parameters={'oauth_callback':oauth_callback_url}
+ resp = self._FetchUrl(url, no_cache=True, parameters=parameters)
token = oauth.OAuthToken.from_string(resp)
return token


Twitter OAuthのコールバックの挙動は、Application Type, Callback URLの指定内容により異なるようです。[OAuth]【宿題】twitterのcallback URLのあたりについてはっきりさせたい!のエントリを参考に確認と実装を行いました。