TwitterでOAuth使う
自分用のメモ。あとでまとめるかも。以降Twitterと書いてるけど他のOAuthの認可を出すサービスプロバイダが出たらそれらをTwitterと置換してください。
参考
- OAuthのやり取りを読み取ってみる:http://d.hatena.ne.jp/furyu-tei/20090929/1254225568
- tweepyでtwitterの3-legged OAuth認証を試してみた(GoogleAppEngine):http://taichino.com/programming/1433
- twitterAPI用pythonライブラリtweepyを使えるようになるまで。:http://hatenatunnel.appspot.com/Number6/20100116/1263631863
なぜOAuthを使うのか
Twitterじゃないサービス(携帯百景とか)にTwitterのパスワード渡したとき、素のパスワードを渡すとパスワード変えたときにいちいち全部変える必要がある。
またうっかりミスでサービス屋さんがパスワードを別の人に漏れることもある。OAuthなら認証トークンが漏れてもサービス毎に認証トークン変わるだろうし問題ないと思う。
まあTwitterとかのパスワードとサービスの認証を切り離したってとこが大きいんだと思う。
デスクトップクライアントだとOAuthを使うのがちょっとメンドイ理由
参考1を少し見てもらえればわかるけど、ユーザがTwitterで認証したあとにTwitterから認証できたよっていうコード(oauth_tokenなりoauth_verifier)が送られてくる。WebサービスならCallbackで引数渡してあげれば済むのだけど、デスクトップクライアントではそれが出来ない。よってここでユーザが手動でクライアントの設定に入力する必要がある。要はOAuthってWeb脳。
最近はTwitterで認証したときにPINを表示して、それをクライアントの設定で入れればよくなったみたいだけど、それまでは・・oauth_tokenとかoauth_verifierを全部コピペでもする必要あったのかなぁ。
というかクライアントの場合、consumer_secretをユーザの手元に置くことにならないか?PINとconsumer_secretがあってそれ使ったクライアント認可してたら、別の人/アプリケーションからアクセスできそうなんだけど。。。
oauthを(Twitterを使った)サービス作者が使うまでの手順
- http://twitter.com/oauth_clientsにアクセスして使いたいサービスを登録する。登録するとkeyとsecretの2種類の鍵がもらえる。keyはユーザに見せて、secretは見せちゃいけないと思う(未確認)
- oauthを使うプログラムを書く。ここではtweepy(http://joshthecoder.github.com/tweepy/)を使う