user1とuser2に2つのTwitterアクセストークンがあるとします。それぞれに180回の呼び出しがあり、特定の検索のツイートを取得します。
user1が15分のウィンドウで180の呼び出しすべてを使用するとしますが、私のアプリがuser2のアクセストークンを使用して、user1が追加の呼び出しを行えるようにすることは可能ですか?これはもちろん、user2がその時点で自分のアクセストークンを使用していないことを前提としています。
user1とuser2に2つのTwitterアクセストークンがあるとします。それぞれに180回の呼び出しがあり、特定の検索のツイートを取得します。
user1が15分のウィンドウで180の呼び出しすべてを使用するとしますが、私のアプリがuser2のアクセストークンを使用して、user1が追加の呼び出しを行えるようにすることは可能ですか?これはもちろん、user2がその時点で自分のアクセストークンを使用していないことを前提としています。
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に警告することができます。
それが役に立てば幸い