余白

https://blog.lacolaco.net/ に移転しました

TwitterAPI1.1に移行する際の注意点〜401に騙されるなの巻〜

しばらく前からT4CSというC#のTwitterAPIラッパーを開発中なのですが、T4CSのAPI1.1対応過程で躓いた点を備忘録も兼ねて情報共有ということでメモります。

躓いたのはusers/lookup。
1.0ではクエリとしてscreen_nameかuser_idをカンマ区切りで付加してあげればよかったです。
1.1でもその点は変わらないのですが、一つ注意点があります。

1.1ではカンマのURLエンコードが必須である

ってことです。
つまりクエリ中のカンマは%2Cに置き換える必要があります。URLエンコード自体は大体どの言語でもライブラリなりなんなりとあると思います。
今までエンコードしないといけなかったのはstatuses/updateのtextくらいでしたが、これからはカンマが含まれる可能性のあるエンドポイントのクエリにもエンコードを掛ける必要があります。

そして何がややこしいかというと、この変更点に気づかずにカンマをそのままにしてサーバーに送信すると、
帰ってくるエラーはなぜか401:Unauthorizedだということです。
これに騙されて1時間くらい悩んでました。認証まったく関係ありませんでした。

すでに出来上がったラッパーライブラリを使っている方には関係ないですが直接APIを叩くアプリケーションやライブラリを作っている方で同じ問題に悩まされた人がいましたら参考になれば幸いです。

[追記]
1.0はカンマのURLエンコードをしてもしなくてもどちらでもよいみたいです。

[追記]
指摘を受けまして、カンマは本来エスケープされるべき文字で、1.0でエスケープせずに受理されていたほうがどちらかと言うとおかしいようです。