[英]Authenticate to Twitter API
所有,我一直都在达到速率限制。 我只是想从自己的时间表中获取最新状态。 我正在使用以下代码来实现这一目标:
$url = "https://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&count={$how_many}";
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$contents = curl_exec( $curl );
curl_close( $curl );
if ( ! empty( $contents ) ) {
// Decode it.
$tweet = json_decode( $contents );
// Cache it for next time.
set_transient( $id.'-'.$username, $tweet, 60*60*12 ); // 3 hour cache
}
效果很好,但我一直都达到每小时150个请求的速率限制。 我已经读过,如果我通过API进行身份验证,则速率限制将被取消。 谁能解释该怎么做?
提前致谢!
您是否需要每隔4分钟刷新一次状态? 我猜不是,您实际上是在代码中设置了3小时的缓存,所以为什么不使用它呢?
if(get_transient($id.'-'.$username) === false) {
$url = "https://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&
count={$how_many}";
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$contents = curl_exec( $curl );
curl_close( $curl );
if ( ! empty( $contents ) ) {
// Decode it.
$tweet = json_decode( $contents );
// Cache it for next time.
set_transient( $id.'-'.$username, $tweet, 60*60*12 ); // 3 hour cache
}
}
显然,您可以根据需要减少缓存的持续时间。
Twitter REST API的费率与您所声明的完全相同-未经身份验证的请求(通过IP地址)为150,对于Oauth身份验证的请求为350。 我过去所做的是查看您的查询,并使用Search API-进行更有效的调用。 或者,从不同的虚拟IP地址执行更多呼叫。
从https://dev.twitter.com/docs/rate-limiting#rest发送未经验证的呼叫,每小时允许150个请求。 未经认证的呼叫将根据发出请求的服务器或设备的面向公众的IP进行衡量。 每小时允许进行350个请求的OAuth调用,并根据请求中使用的oauth_token进行度量。
您再也不会白名单中了。 这是支持此操作的链接 。
有关直接来自Twitter的PHP的示例,请在此处尝试并查看PHP Twitter库。 本质上,您必须通过设置Twitter应用程序并接收Oauth密钥和密钥来建立Oauth连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.