2

如何将 twitter api 与“http 基本身份验证”一起使用?

我想我应该使用“消费者密钥”!因为 twitter 给了你每小时请求的限制率,如果我不使用我的消费者密钥,他们如何计算我的请求?

4

5 回答 5

5

每当您想对任何东西使用 HTTP 基本身份验证时,如果您想忽略实际的实现和 HTTP 标头,只需使用cURL。这是 PHP 中的一个简单示例,cURL 也可以在其他语言中使用:

<?php
$ch = curl_init();
// Sets the URL cURL will open
curl_setopt($ch, CURLOPT_URL, 'http://twitter.com/statuses/user_timeline.xml?screen_name=al3x');
// Here's the HTTP auth
// The 3rd argument is your Twitter username and password joined with a colon
curl_setopt($ch, CURLOPT_USERPWD, 'username:password');
// Makes curl_exec() return server response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Lately the Twitter API expects an Expect header. It's a mystery
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
// And here's the result XML
$twitter_xml = curl_exec($ch);
curl_close($ch);
?>

然后$twitter_xml将包含 al3x 的公共时间线的 XML。就速率限制而言,ceejayoz 已经很好地回答了这个问题。

于 2009-05-22T08:04:35.767 回答
1
$twitter = file_get_content("http://user:password@twitter.com/blabla");

更多关于 PHP 中的原生 HTTP Wrapper 支持

于 2009-05-22T08:38:35.590 回答
1

我认为他们会计算来自同一个 IP 的请求 - 但我没有仔细检查。

即使是动态 IP 地址对于会话来说也是静态的,并且在没有任何其他识别信息的情况下,唯一可以将您与其他用户区分开来的东西。

正如其他海报所说 - 如果你有钥匙,有更好的方法。

于 2009-05-22T07:37:28.490 回答
1

经过身份验证的 API GET 请求将计入​​您的用户帐户的计数中。

未经身份验证的 API GET 请求(某些方法允许)计入您的 IP 地址计数。

POST 请求不受速率限制。

Twitter 文档中提供了更多详细信息。

于 2009-05-22T07:44:51.377 回答
0

我最近写了一些 PHP 来发布到 Twitter 这是它的工作部分:

$message = 'A new revision (#' . $data['revision'] . ') was commited by ' . $data['author'] . ': ' . $data['message'] . "";

$message = substr($message, 0, 140);

$content = 'status=' . urlencode($message);
$packetString = "POST /statuses/update.xml HTTP/1.1\r\n";
$packetString .= "Authorization: Basic " . base64_encode($username . ":" . $password) . "\r\n";
$packetString .= "Content-Length:" . strlen($content) . "\r\n";
$packetString .= "HOST: twitter.com\r\n";
$packetString .= "\r\n" . $content . "\r\n";

$sock = fsockopen('twitter.com', 80);
fwrite($sock, $packetString);
//This is some logging, to a local file so I can monitor local what's going on
$response = fread($sock, 10240);
fwrite($fh, $packetString . "\r\n\r\n\r\n" . trim($response) . "\r\n\r\n\r\nD:\r\n" . $d);
fclose($fh);

您可以在此处看到它的实际效果:http: //twitter.com/fmsvn 使用来自我们 SVN 服务器的回调 我将 SVN 消息发布到项目 Twitter 提要。

于 2009-05-22T07:47:59.017 回答