如何使用twitter api与“http basic auth”?

时间:2009-05-22 07:32:04

标签: php api authentication twitter

如何使用twitter api和“http basic auth”?

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

5 个答案:

答案 0 :(得分: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已经很好地回答了这个问题。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

经过身份验证的API GET请求将根据您的用户帐户计算。

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

POST请求不受费率限制。

More details are available in the Twitter docs.

答案 3 :(得分:1)

$twitter = file_get_content("http://user:password@twitter.com/blabla");

more about native HTTP Wrapper support in PHP

答案 4 :(得分: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 Feed。