White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

TwitterでOAuth使う

自分用のメモ。あとでまとめるかも。以降Twitterと書いてるけど他のOAuthの認可を出すサービスプロバイダが出たらそれらをTwitterと置換してください。

参考

  1. OAuthのやり取りを読み取ってみる:http://d.hatena.ne.jp/furyu-tei/20090929/1254225568
  2. tweepyでtwitterの3-legged OAuth認証を試してみた(GoogleAppEngine):http://taichino.com/programming/1433
  3. 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を使った)サービス作者が使うまでの手順

  1. http://twitter.com/oauth_clientsにアクセスして使いたいサービスを登録する。登録するとkeyとsecretの2種類の鍵がもらえる。keyはユーザに見せて、secretは見せちゃいけないと思う(未確認)
  2. oauthを使うプログラムを書く。ここではtweepy(http://joshthecoder.github.com/tweepy/)を使う

問題

パスワードとサービスの認証を切り分けてるので、お行儀の悪いサービスがあった時にパスワードを変えても意味がない。この場合twitterの設定で接続出来ない様にできる。

(変更中)