1. TOP
  2. Webサービス
  3. Twitter
  4. Twitter developersのストリーミングAPIでは1つのアカウントで1つのエンドポイントにしか接続できない。何回も接続しようとするとTwitterから切断されます

Twitter developersのストリーミングAPIでは1つのアカウントで1つのエンドポイントにしか接続できない。何回も接続しようとするとTwitterから切断されます

|
Twitter_logo_blue

数日間、TwitterのストリーミングAPI(Streamed Tweets)が取得できない問題で悩んでいましたが、やっと解決しました。

新しいAPIキーで実行してつぶやきを表示

答えは簡単で、アプリケーションの登録から、新たにAPIキーを取得して、それを使えばいいだけのことでした。

// The OAuth credentials you received when registering your app at Twitter
define("TWITTER_CONSUMER_KEY", "newAPIkey");
define("TWITTER_CONSUMER_SECRET", "newAPISecret");
 
 
// The OAuth data for the twitter account
define("OAUTH_TOKEN", "newAccesstoken");
define("OAUTH_SECRET", "newAccesstokenSecret");

先日の記事に書いたコードで言えば34行目、35行目、39行目、40行目に当たります。新しいAPIキーで接続すると、ストリーミングAPIによるツィートが返されます。

stream

ちなみに、API KeyとAPI Secret及び、Access tokenとAccess token secretのAccess-levelは、ともに”Read-only”です。

ストリーミングAPIの注意点

ただしストリーミングAPIは、接続に関する注意点がドキュメンテーションで指摘されています。

Connections

Each account may create only one standing connection to the public endpoints, and connecting to a public stream more than once with the same account credentials will cause the oldest connection to be disconnected.

Clients which make excessive connection attempts (both successful and unsuccessful) run the risk of having their IP automatically banned.

ストリーミングAPIは、慎重な取り扱いが必要なようです。日本語で要約するとこんな感じになります。

  • 1つのアカウントは、1つのパブリックエンドポイントにしか接続できない
  • 1つの同じアカウントで、「複数回」エンドポイントに接続すると切断される
  • (ブラウザをリロードするなどで)何度も過剰な接続を試みると、そのIPアドレスによる接続は禁止される恐れがある

個人的に実験を行った結果、ここでいう「複数回」と言うのは、2回以上のことです。ツィートの表示に成功しても、一度でもリロードをすると、Twitterとの接続が切断されました。

最初は何も知らずに、何回も接続を試みたり、アプリケーションの登録と削除を繰り返していました。すると何度目かのアプリ登録の際に、Twitter developmentから、次のようなお叱りが。

Error
Rate limit exceeded. If you believe you've received this message in error please file a ticket

ストリーミングAPIの取り扱いについては、くれぐれも慎重に行いましょう。

〔前の記事〕

〔参考サイト〕