我需要使用实时推文样本。我有这段代码,但我无法得到任何东西,我称之为正确的链接。我肯定会输入正确的用户名和密码,但它仍然没有通过。请建议是因为twitter最近更改了API。对不起,如果问题是基本的,我是新手。提前致谢
<?php
//datacollector.php
$fp =
fopen("http://username:pass@stream.twitter.com/spritzer.json
while($data = fgets($fp))
{
$time = date("YmdH");
if ($newTime!=$time)
{
@fclose($fp2);
$fp2 = fopen("{$time}.txt","a");
}
fputs($fp2,$data);
$newTime = $time;
}
?>
答案 0 :(得分:3)
DWRoelands关于弃用的帖子是正确的,但这实际上不是你的问题 - 问题在于Twitter deprecated spritzer.json。您应该使用/1/statuses/sample.json
来获取firehose。这是一个有效的命令行示例:
curl http://stream.twitter.com/1/statuses/sample.json -uusername:password
如果您希望在生产中使用此代码很长一段时间,我当然会考虑实施OAuth,但由于Twitter甚至没有宣布关闭Basic Auth的时间表,所以如果您只是无所事事。当然,他们可以在没有任何警告的情况下明天关闭它。
这是一些有效的PHP代码,只需用实际凭据替换username:password:
<?php
//datacollector.php
$fp = fopen("http://username:password@stream.twitter.com/1/statuses/sample.json", "r");
while($data = fgets($fp)) {
$time = date("YmdH");
if ($newTime!=$time) {
@fclose($fp2);
$fp2 = fopen("{$time}.txt","a");
}
fputs($fp2,$data);
$newTime = $time;
}
?>
答案 1 :(得分:1)
如果您需要应用程序,可以使用Twitter C# API : Tweetinvi
轻松使用C#进行开发API提供了一个类Stream,允许您使用委托函数检索流的信息。
以下是样本提供的示例:
private static void streaming_example(Token token)
{
// Creating a Delegate to use processTweet function to analyze each Tweet coming from the stream
Stream.ProcessTweetDelegate produceTweetDelegate = new Stream.ProcessTweetDelegate(processTweet);
// Creating the stream and specifying the delegate
Stream myStream = new Stream(produceTweetDelegate);
// Starting the stream by specifying credentials thanks to the Token
myStream.StartStream(token);
}
实施简单快捷。
我是该项目的开发人员之一。
答案 2 :(得分:0)
流式传输API文档表明您需要使用OAuth进行验证才能访问用户流。请参阅:Twitter: Streaming API Concepts
该页面还表明不推荐使用基本身份验证,因此我认为您需要调整代码才能使用OAuth。
答案 3 :(得分:0)
从here下载lib文件夹。使用以下代码将它们放在同一文件夹中。修改Api键并更改要跟踪的关键字。如果你要在浏览器中执行它稍等一下。
<?php
/***************libraries*********************/
require_once('../lib/Phirehose.php');
require_once('../lib/OauthPhirehose.php');
/*********Escape from Execution Time***********/
set_time_limit(0);
class FilterTrackConsumer extends OauthPhirehose
{
public function enqueueStatus($status)
{
$data = json_decode($status, true);
if (is_array($data) && isset($data['user']['screen_name'])) {
print $data['text'];
}
}
}
/*************************API KEYS*******************************/
define('TWITTER_CONSUMER_KEY', 'api_key');
define('TWITTER_CONSUMER_SECRET','api_secret');
define('OAUTH_TOKEN','token');
define('OAUTH_SECRET','token secret');?>
// Start streaming
$sc = new FilterTrackConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_FILTER);
$sc->setTrack(array('#keyword'));
$sc->consume();
?>