【问题标题】:Consuming twitter stream API使用 twitter 流 API
【发布时间】:2011-09-05 13:14:31
【问题描述】:

我需要使用实时推文示例。我有这段代码,但我无法得到任何我调用正确链接的东西。绝对我输入了正确的用户名和密码,但仍然没有通过。请建议是因为 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;
}
?>

【问题讨论】:

标签: php api twitter stream


【解决方案1】:

DWRoelands 发布的关于弃用的内容是真实的,但这实际上不是你的问题——问题在于 Twitter deprecated spritzer.json。您应该改用/1/statuses/sample.json 来获取消防水带。这是一个有效的命令行示例:

curl http://stream.twitter.com/1/statuses/sample.json -uusername:password

如果您希望在生产中长期使用此代码,我当然会考虑实施 OAuth,但由于 Twitter 甚至没有宣布关闭基本身份验证的时间表,所以如果您只是无所事事。当然,他们明天可以在没有任何警告的情况下将其关闭。

这是一些有效的 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;
}
?>

【讨论】:

  • 非常有用。您能否指出我如何在 php 脚本中使用它。如何使用推文并解析 json 行。我试图调用此链接而不是上面脚本中调用的链接,但它不起作用。提前致谢。我的计划是使用它一段时间然后切换到 OAuth,所以现在不需要解决 OAuth 部分。提前致谢
  • 我从来没有同时使用过 PHP 和 Twitter,但谷歌搜索表明 phirehose 可以解决问题:github.com/fennb/phirehose
【解决方案2】:

如果您需要一个应用程序,您可以使用 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);
    }

易于实施。

我是该项目的开发人员之一。

【讨论】:

    【解决方案3】:

    流式 API 文档表明您需要使用 OAuth 进行验证才能访问用户流。见:Twitter: Streaming API Concepts

    该页面还表明基本身份验证将被弃用,因此我认为您需要调整代码以使用 OAuth。

    【讨论】:

      【解决方案4】:

      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();
        ?>
      

      【讨论】:

        猜你喜欢
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        • 2015-12-31
        • 2011-06-11
        • 2013-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多