OAuthでハマったのでメモ

2009/12/23 [12:43:31] (水) 天気

twitter の OAuth認証を、と思ってごそごそ調べては試行錯誤。OAuthの一次情報、仕様を見ながら、自分でサインを作ればこんなにハマらなかったと思うんだけど、ラクしようと思って、perl の Net::OAuth ver0.20に投げたのが始まりだ。

以下のページを参考にさせていただいて、CPANからOAuthをインストールすればラクショーっぽいぞ、と。

http://blog.photoble.net/archives/category/memo/oauthtwitter

http://sayama-yuki.cocolog-nifty.com/blog/2009/09/twitteroauth-d7.html


甘かった。


その1.最初のリクエストで oauth_callback_confirmed が返ってこない

その2.twitterから、リダイレクトされて戻ってきたときには 401。認証されず、 oauth_verifier も返ってこない。


なんじゃそりゃ、と。延々ググりまくって今朝未明まで。今日も天気だというのに早起きして、ググる。…ヒットしないんだけど、どうやら OAuthの 1.0 と 1.0a の違いが原因っぽい。oauth_callback_confirmed も oauth_verifier も 1.0a から導入されたパラメータ、てことだ。OAuthで作られるパラメータを確認してみると、指定しているにも関わらず、callbackが入っていない。

Net/OAuth/で grep してみて OAuth.pm を読んでようやく解決。

request パラメータを組み立てるところに


protocol_version=> Net::OAuth::PROTOCOL_VERSION_1_0A

一行入れるだけ、だった。



authorization::OAuth oauth_callback="http%3A%2F%2Fwww.holeinthewall.jp%2F~butch%2Ftest.php",oauth_consumer_key="XXXXXXXXXXXXXXX",oauth_nonce="58Uy53B6DoFbKR0ksBcCnLiF5Po",oauth_signature="NNNNNNNNNNNNNNNNNNNNN",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1261539010",oauth_version="1.0a"

↑これが正しいリクエストヘッダー


CPANは便利なんだけど、素人芸の、ブラックボックス、コピペ使いは限界があるんだよなあ。


ここが通ったら次はアクセストークン取得でそれの扱いをどうするのか、またググる、か。でも気力体力が尽きたので以下次号だ。


Twitter API ポケットリファレンス (POCKET REFERENCE)

『Twitter API ポケットリファレンス (POCKET REFERENCE)』

山本 裕介

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】