假设我为user1和user2提供了2个Twitter访问令牌.每个人都有180个电话来获取特定搜索的推文.
假设user1在15分钟的窗口中使用了所有180个调用,我的应用程序是否可以使用user2的访问令牌,以便user1可以进行额外的调用?这当然是假设user2在那个时刻没有使用他/她的访问权限.
我在PHP-Zend中使用了亚伯拉罕的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;
}
Run Code Online (Sandbox Code Playgroud)
现在您获得所有API速率限制.你想要搜索它会给出以下数据
["search"] => object(stdClass)#170 (1) {
["/search/tweets"] => object(stdClass)#171 (3) {
["limit"] => int(180)
["remaining"] => int(180)
["reset"] => int(1366107386)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,例如,如果user1限制超过了您可以使用用户2或用户3访问令牌,但在此之前您可以检查用户2或用户3速率限制.现在您可以在上面的搜索结果中看到,您将获得['reset']值.这意味着它将在很长一段时间后重置.当user1限制超过时,您需要保存该重置参数,而不是在该段时间内使用user2和user3访问令牌.当15分钟结束时,您可以再次使用用户1访问令牌.并且可能如果user2和用户3都在该时间窗口上使用该搜索API,则可以向用户1发出警告,您可以在一段时间后进行搜索.
希望能帮助到你