2014/01/26(日)Tweepy2.1でTwitterにアクセスできなくなったときのお話
2014/01/26 19:57
書こう書こうと思っている間にTweepy側で対応が行われたため、あまり価値のある情報ではなくなった感もありますが、作業ログとして残しておくことにします。
今月14日にTwitterのAPIの仕様変更があり、アクセスの際のHTTPのエンドポイントが廃止され、HTTPSでのアクセスが必須となりました。お使いのクライアントが突然使えなくなった方もいらっしゃることでしょう。
Tustle!ではTwitterアカウントによる認証を行っており、そのときのライブラリとしてはTweepyを利用しています。そして、Twitter側の仕様変更以降、Tustle!でもログインすることができなくなってしまいました。
最初はTweepyを最新版にすればいいのかと思いましたが、(その当時は)pipでアップデートのコマンドも叩いても「Requirement already up-to-date」とのこと。仕方なくソースを追ったのですが、大元の原因がHTTPSを使っていないことだろうという当たりがついていたこともあり、動かない原因はすぐにわかりました。Tweepyでは、Twitterに接続するときはデフォルトでHTTPを使うようになっていたのですね。
というわけで、インスタンスの生成時に明示的にHTTPSを利用するように指定してみました。
# 旧 oauth_handler = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) # 新 oauth_handler = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET, secure=True)
これだけ直りました。
ちなみに、Tweepyの2.2ではsecureのデフォルト値はTrueに変更されており、このような問題は(明示的にFalseを指定しない限り)発生しません。もしTweepyを使ってTwitterにアクセスできないという方は、Tweepyを最新版にアップデートするか、アプリ側で上記のような対応を入れてみてください。