3

user1とuser2に2つのTwitterアクセス​​トークンがあるとします。それぞれに180回の呼び出しがあり、特定の検索のツイートを取得します。

user1が15分のウィンドウで180の呼び出しすべてを使用するとしますが、私のアプリがuser2のアクセストークンを使用して、user1が追加の呼び出しを行えるようにすることは可能ですか?これはもちろん、user2がその時点で自分のアクセストークンを使用していないことを前提としています。

4

1 に答える 1

7

PHP-ZendでabrahamのoAuthライブラリ(https://github.com/abraham/twitteroauth )を使用しました。また、ユーザーのアクセストークンをデータベースに保存し、アプリのレート制限を取得するために以下の関数を作成しました。

public function getAppLimit($user_id)
    {        

       $data = $this->getTwitterConnection($user_id);

        $connection = new TwitterOAuth(self :: CONSUMER_KEY, self :: CONSUMER_SECRET, $data['oauth_token'], $data['oauth_token_secret']);

        $rate_limit = $connection->get('application/rate_limit_status');

        return $rate_limit;        
    }

これで、すべてのAPIレート制限を取得できます。検索したい場合は、以下のデータが表示されます

["search"] => object(stdClass)#170 (1) {
      ["/search/tweets"] => object(stdClass)#171 (3) {
        ["limit"] => int(180)
        ["remaining"] => int(180)
        ["reset"] => int(1366107386)
      }
    }

たとえば、user1の制限を超えている場合は、ユーザー2またはユーザー3のアクセストークンを使用できますが、その前に、ユーザー2またはユーザー3のレート制限を確認できます。これで、上記の検索結果に['reset']値が表示されることがわかります。それはそれがその時間の後にリセットされることを意味します。user1の制限を超える場合は、そのリセットパラメータを保存し、その期間、user2およびuser3アクセストークンを使用する必要があります。そして、その15分が経過すると、ユーザー1のアクセストークンを再び使用できるようになります。また、ユーザー2とユーザー3の両方がその時間枠でその検索APIを使用している場合は、しばらくすると検索を実行できることをユーザー1に警告することができます。

それが役に立てば幸い

于 2013-04-16T10:18:43.397 に答える