Twitter APIのOAuth認証がInactiveになって、戻してもらった

先日lovetestterというのを作ったわけだけど、数日したら、なんか動かなくなった。

調べてみると、OAuth認証が通らなくなってる。しかも、Access Tokenがダメなのではなく、Consumer Key/Consumer Secretがダメ。つまり、認証が通らないというよりは、認証を開始することすらできない状態。

http://dev.twitter.com/apps を見ると、lovetestter用のアプリの登録のところに「Inactive」の文字。どうやら、Twitterの運営側にアプリを無効化されちゃってる様子。

メールで問い合わせた

api@ で始まるメアドに問い合わせた。英語で書かなきゃいけないので苦労した。

内容としては、「http://lovetestter.nacookan.com/ というアプリを作ったんだけど、登録情報が "Inactive" ってなっちゃって、OAuthできなくなったよ。なんで?どうやったらアクティブに戻してもらえるのか、教えてちょうだい。」という感じ。

このメアドに送ると、自動でトラッキングシステムに登録されるらしい。登録されたよ!という趣旨のメールがすぐ返ってきた。メールにはURLが含まれていて、やりとりがWebで見れるようになってるっぽい。

返事が来た

翌日、返事が来た。トラッキングシステムに回答が投稿され、メールでも届いた。

もちろん内容は英語なんだけど、だいたいの雰囲気は「アプリのURLがユーザーを惑わす感じだから無効にした。」ということ。運営からのメールは、一文が長くて長くて、英語としてすごい難しい。英語は苦手なので半分くらいしかわからなかったけど、認証前のページと、認証を終えてアプリが動作するページは、同じURLにしないとダメってことらしい。

確かに、従来の作りは、最初index.htmlに居て、認証後はresult.htmlに移動している。これがダメなのかな?

なおした

ということで、作りを変えた。index.htmlではまずプロフィール取得を試みて、うまくできたらそのまま作動。ダメならOAuth開始URLを貼る。OAuth認証後、同じくindex.htmlに戻ってくる。認証が正しくできていれば、まずプロフィール取得を試みたときに、うまく取れるはず。

従来は、

  1. index.html
  2. oauth_start.cgi
  3. oauth_callback.cgi
  4. result.html

という流れだった。これを、

  1. index.html
  2. oauth_start.cgi
  3. oauth_callback.cgi
  4. index.html

となるように変えた。

途中でOAuthのために挟まるcgiは従来通りのURLで、ユーザーの目に触れるページは同じindex.htmlとした。最初、全てを同じにしようかとも思ったけど、「ユーザーを惑わす」あたりに問題があるっぽかったので、OAuthのために一瞬だけ挟まるcgiのURLは問題じゃないのかな(ユーザーの目に触れるhtmlだけを統一すればいいのかな)と思って、その路線でいった。

再びメールを送る

なおしたので、そのことをメールで知らせる。「返信ありがとう。最初のページと次のページを同じURLにしてみたよ。チェックしてね。」という感じの内容。

実際、APIを有効にしてもらわないと、テストすらできない。仕方ないので、別な適当なアプリを登録して、そっちのキーでテストを行い、うまく動いたっぽいことがわかったら、元のキー(止められていて、動かせないキー)に戻しておいた。

Twitter側の人も、一旦このキーを有効にしないと確認できないはず。まあ仕方ないよねそれは。

返事がきて解決

翌日、返事が来た。「あなたのAPIキーの無効化を解除したよ。でも開発ルールは守ってね。将来またなんかあったら、またキーを止めるよ」という内容だと思う。

試してみると、確かにInactiveの文字が消えていて、lovetestterが動作するようになってる。わーい。

終わり

英語を読み違えている可能性はあるけど、とりあえずOAuth呼び出し前と、呼び出し後のURLは、同じ方がいい。そして、一度Inactiveにされちゃったら、運営にメールを出すといい。