OAuthでハマったのでメモ

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は便利なんだけど、素人芸の、ブラックボックス、コピペ使いは限界があるんだよなあ。
ここが通ったら次はアクセストークン取得でそれの扱いをどうするのか、またググる、か。でも気力体力が尽きたので以下次号だ。
| << | 2026/1 | >> | ||||
|---|---|---|---|---|---|---|
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
【最近の20件】
- 20260129 ブログをレスポンシブ対応にリニューアル
- 20260126 ブログのふり返り
- 20260121 小ネタ:ed25519秘密鍵公開鍵とJson serialized canonical
- 20260120 ActivityPubは自作実装しよう!
- 20260117 RFC9421版HTTP Signatureに対応
- 20260111 HTTP Signatureの署名対象文字列
- 20260109 web本棚のActivityPub対応
- 20260106 web本棚のソースコード公開
- 20260104 web本棚
- 20260101 謹賀新年2026
- 20251231 2025年ふりかえり
- 20251213 perlと30年
- 20251210 ActivityPubの投稿削除
- 20251101 日常雑感
- 20251026 テキトーフェッチメール
- 20251014 ActivityPubサーバーで投稿の編集
- 20251008 元WINDOWS10のノパソにlinux mint
- 20251002 GBLシーズン「変わりゆく物語」でACE到達
- 20250925 ブログのアクセス制限
- 20250922 ActivityPubサーバーに引用を実装


