Skip to main content

OAuth 1.0実装時のありがちなミス

· 3 min read

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,...)で並べる。
順番が変わると署名も変わってくるのできちんと並べること。