OAuth 1.0実装時のありがちなミス
OAuth 1.0を実装する際にありがちなミスを並べてみた。
ライブラリを使う人は遭遇することはないだろう。
- KeyとSecretが違う
- POSTとGETの指定ミス
- URL encodeミス
- encode忘れ
- encodeしすぎ
- 必要なヘッダーはある?
- ヘッダーに付けすぎ
- ヘッダーはカンマ区切り
- ソート忘れ
KeyとSecretが違う
単に「別アカウント用のKeyとかSecret使ってました」というやつ。
キーを更新したのに実装側を修正し忘れたとか。
POSTとGETの指定ミス
POSTでAPIを叩かなければならないところをGETにしてしまった。
逆も然り。
URL encodeミス
RFC 3986を使ってる?という確認。
▶Percent encoding parameters | Twitter Developers
https://dev.twitter.com/docs/auth/percent-encoding-parameters
encode忘れ
encodeし忘れてるというだけ。
encodeしすぎ
encodeを必要以上にしている状態。
signature作るときに複数メソッドを定義していて、それぞれのメソッドでエンコードしたら余計にエンコードしてしまったようなとき。
必要なヘッダーはある?
Content-Length, Content-Typeはきちんとある?
ヘッダーに付けすぎ
Authorization: OAuth...にAPIのパラメータまでつけているとき。
ヘッダーには oauth_ から始まるパラメータが必要。
だけど、oauth_signatureを作成するときにはAPIのパラメータを含んだもので生成すること。
ヘッダーはカンマ区切り
Authorization: OAuth oauth_consumer="XYZ", oauth_nonce="0123456789", ...
署名するときには oauth_consumer=XYZ&oauth_nonce=0123456789&... だから紛らわしい。
ソート忘れ
パラメータは昇順(a,b,c,...)で並べる。
順番が変わると署名も変わってくるのできちんと並べること。