假设我有 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 )。我还将用户的访问令牌存储在数据库中,并制作了以下函数来获取 App Rate Limit。
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)
}
}
现在,例如,如果用户 1 限制超过您可以使用用户 2 或用户 3 访问令牌,但在此之前您可以检查用户 2 或用户 3 速率限制。现在您可以在上面的搜索结果中看到您将获得 ['reset'] 值。这意味着它将在很长一段时间后重置。当 user1 超过限制时,您需要保存该重置参数,然后在该时间段内使用 user2 和 user3 访问令牌。当 15 分钟结束后,您可以再次使用用户 1 访问令牌。如果用户 2 和用户 3 都在该时间窗口上使用该搜索 api,您可能会警告用户 1,您可以在一段时间后进行搜索。
希望能帮助到你