« 03月29日のココロ日記(BlogPet) | トップページ | ソーシャルブックマーク管理ツール bookey 0.60s版 »
2009.03.30
OAuth のややこしいところ
Twitter の OAuth が一般解放されたのを受けて、現在、自作ソフトを OAuth に対応させるためのコードを書いているところです。
OAuth は Flickr の認証に似ているということで、去年 Chirrup を Flickr 認証に対応させた経験がある程度流用できるのかと思いきや、細かいところではまっています。そのうちの1つが、URLエンコード関係の問題。
OAuth で何がややこしいかというと、URLエンコード(パーセントエンコード)が必要なところで、16進数部分に出現するアルファベットについて、一方は「大文字」じゃないといけなくて、他方では「小文字」じゃないといけないこと。何で大文字、小文字のどっちかに統一されてないんだろう?
- 大文字じゃないといけないところ
- 5.1. Parameter Encoding
Hexadecimal characters in encodings MUST be upper case.
- 5.1. Parameter Encoding
- 小文字じゃないといけないところ
- 9.1.2. Construct Request URL
URL scheme and authority MUST be lowercase
- 9.1.2. Construct Request URL
具体的には、signature を生成するときの各構成要素をエンコードするときは「大文字」じゃないといけないのに対し、生成した signature をエンコードするときは「小文字」じゃないといけないという罠。あと、'-', '.', '_', '~' はパーセントエンコードせず、生のままじゃないと駄目。これに気づくまでは、何で認証が通らないんだろうと悩んでました。
ということで、もし、自分で OAuth 関連ライブラリを作ろうとしている人は、この辺に気をつけてください。既存の(動作実績のある)ライブラリを使う分には、この辺は知らなくても何とかなっちゃうと思いますけど。
投稿者: tsupo 2009.03.30 午後 06:28
| 固定リンク
|
|
|
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: OAuth のややこしいところ:
» C# で OAuth from 観測気球
C# で OAuth 対応アプリケーションを書くときに、Google Code で公開されている OAuthBase.cs を参考にする人が多いと思うんですが、この OAuthBase.cs をそのまま使うと、引数にマルチバイト文字(日本語とか中国語とか)を含むhttpリクエストの認証が失敗します。その解決方法について、書いてみました。... 続きを読む