Via.Meのアップロードはtwiccaにのみ許された所業
いつの日の事だったか、 Via.Me の API が一般公開されたときは特に関心を持ってなかったのですが、よくみてみると、これドキュメントにはどこにも OAuth Echo での投稿方法が書いてないんですね。
公式のドキュメントにしたがって投稿するには、また別に認証をしなきゃいけないみたいです。というわけで、本当に OAuth Echo で投稿できないのか調査してみました。まぁタイトルで結果はわかりますよね?
とりあえずアップロード API に OAuth Echo で投げてみる
一から OAuth Echo ヘッダをつくるコードを書くのは面倒なので、 Krile を改造してやってみました。追加したコードはこんな感じ長いですけど、ほぼコピペです。
そしてこれを実行すると、
System.Net.WebException: リモート サーバーがエラーを返しました: (401) 許可されていません
{"error":{"message":"unauthorized","status":401}}
まぁ予想はできたよね。
twicca の通信をキャプチャしてみる
Shark for Root でキャプチャして PC の Wireshark で見てみました。
そもそも、 upload.json という別のエンドポイントを使ってるようです。
upload.json を使ってみる
System.Net.WebException: リモート サーバーがエラーを返しました: (401) 許可されていません
{"error":{"message":"unauthorized","status":401}}
はい。
key パラメータを指定してみる
キャプチャ結果をよくみると、 key というフィールドがあります。というわけで、 Client ID を取得して、 key に突っ込んでみました。
System.Net.WebException: リモート サーバーがエラーを返しました: (401) 許可されていません
{"error":{"message":"unauthorized","status":401}}
何かの間違いだよね?懲りずに Client Seret を突っ込んでみました。
System.Net.WebException: リモート サーバーがエラーを返しました: (401) 許可されていません
{"error":{"message":"unauthorized","status":401}}
twicca の key を使用してみる
どこかコードが間違ってるのかと思い、 twicca の key を拝借してやってみました。
てすと via.me/-ancv3ac
— 新生あじょぶじんさん (@azyobuzin) 2013年3月20日
結論
twicca マジ業務提携結んでるとしか考えられない。