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に戻ってくる。認証が正しくできていれば、まずプロフィール取得を試みたときに、うまく取れるはず。
従来は、
という流れだった。これを、
となるように変えた。
途中でOAuthのために挟まるcgiは従来通りのURLで、ユーザーの目に触れるページは同じindex.htmlとした。最初、全てを同じにしようかとも思ったけど、「ユーザーを惑わす」あたりに問題があるっぽかったので、OAuthのために一瞬だけ挟まるcgiのURLは問題じゃないのかな(ユーザーの目に触れるhtmlだけを統一すればいいのかな)と思って、その路線でいった。
再びメールを送る
なおしたので、そのことをメールで知らせる。「返信ありがとう。最初のページと次のページを同じURLにしてみたよ。チェックしてね。」という感じの内容。
実際、APIを有効にしてもらわないと、テストすらできない。仕方ないので、別な適当なアプリを登録して、そっちのキーでテストを行い、うまく動いたっぽいことがわかったら、元のキー(止められていて、動かせないキー)に戻しておいた。
Twitter側の人も、一旦このキーを有効にしないと確認できないはず。まあ仕方ないよねそれは。
返事がきて解決
翌日、返事が来た。「あなたのAPIキーの無効化を解除したよ。でも開発ルールは守ってね。将来またなんかあったら、またキーを止めるよ」という内容だと思う。
試してみると、確かにInactiveの文字が消えていて、lovetestterが動作するようになってる。わーい。
終わり
英語を読み違えている可能性はあるけど、とりあえずOAuth呼び出し前と、呼び出し後のURLは、同じ方がいい。そして、一度Inactiveにされちゃったら、運営にメールを出すといい。