【问题标题】:How to use Twitter Streaming API wih PHP?如何在 PHP 中使用 Twitter 流 API?
【发布时间】:2011-10-15 12:14:35
【问题描述】:

我成功地检索了我的用户时间线以显示在我的网站上使用

$tweets = simplexml_load_file("http://twitter.com/statuses/user_timeline/" . $userID . ".rss");

相当长一段时间。但是,由于最近的页面浏览量越来越多,我现在发现由于速率限制,我遇到了可怕的 HTTP 400 错误。

我一直在尝试了解 Twitter 流 API,但运气不佳(我没有使用 OAuth/JSON 的经验,所以它对我来说完全陌生)。

我查看了TwitStream 的代码,它使用 AJAX/JQuery 提供对搜索 API 的访问。不幸的是,我发布的内容不足以提供一致的搜索结果,所以这不是一个选项。

我还没有发现来自 Twitter 的文档非常有用(如果 JSON 等对您来说不是很新的话,我敢肯定它是有用的)并且我还没有找到任何使用 Streaming 的简单端到端示例API 用于从 PHP 网页中的用户(即我)获取最后的 x 帖子。有很多使用命令行实用程序(例如curl)打开流的示例,但这在某些网络服务器上可能无法实现(我可能没有命令行访问权限)。

如果有人可以为我提供一个简单的 PHP/AJAX/JQuery 但不是 Ruby/Python 网页的代码,该网页从用户时间线中获取最后 10 条推文,我将不胜感激。我暂时不在乎它是否进行民意调查或其他任何事情,只需在页面加载时简单地获取推文就可以了!

所以澄清一下,我追求的是一个类似于 TwitStream 的简单示例(例如,不要打扰 CSS/使 JSON 响应人类可读等),但用于获取用户时间线并将它们显示在网页上。

【问题讨论】:

    标签: php jquery json twitter


    【解决方案1】:

    你在寻找这样的东西吗?

    `<?php
    $username = "TwitterUsername"; // Your twitter username.
    $limit = "5"; // Number of tweets to pull in.
    
    /* These prefixes and suffixes will display before and after the entire block of tweets. */
    $prefix = ""; // Prefix - some text you want displayed before all your tweets.
    $suffix = ""; // Suffix - some text you want displayed after all your tweets.
    $tweetprefix = ""; // Tweet Prefix - some text you want displayed before each tweet.
    $tweetsuffix = "<br>"; // Tweet Suffix - some text you want displayed after each tweet.
    
    $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $limit;
    
    function parse_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix) {
    
    $feed = str_replace("&lt;", "<", $feed);
    $feed = str_replace("&gt;", ">", $feed);
    $clean = explode("<content type=\"html\">", $feed);
    
    $amount = count($clean) - 1;
    
    echo $prefix;
    
    for ($i = 1; $i <= $amount; $i++) {
    $cleaner = explode("</content>", $clean[$i]);
    echo $tweetprefix;
    echo $cleaner[0];
    echo $tweetsuffix;
    }
    
    echo $suffix;
    }
    
    $twitterFeed = file_get_contents($feed);
    parse_feed($twitterFeed, $prefix, $tweetprefix, $tweetsuffix, $suffix);
    ?>`
    

    我在以下位置找到了这个:http://www.instantshift.com/2009/05/25/10-twitter-hacks-for-your-wordpress-blog/

    【讨论】:

    • 感谢您的回复。这似乎与我之前使用的非常相似。我假设我要使用 Streaming API,例如。 stream.twitter.com避免限速问题?
    【解决方案2】:

    尝试使用这个类 https://github.com/KartikTalwar/Twitter-Class

    附带优秀的简单示例,您只需几行代码即可显示大量细节

    【讨论】:

    • 感谢您的链接。不幸的是,这似乎也使用了我上面描述的第一种受速率控制的方法。我特别需要一个使用Streaming API 的示例。
    • @chris 你知道post参数是什么吗?因为如果你这样做了,你可以使用这个类中的submitPOST($param, $url)函数,它基本上就是那个命令行的php版本curlgithub.com/KartikTalwar/Scraper-Class
    • 如果我正确阅读https://dev.twitter.com/docs/streaming-api/methods,我相信post方法会是http://stream.twitter.com/1/statuses/filter.json,然后我可以像$params = count=10一样构造$params
    • @Chris $params 需要是一个关联数组,因此您将创建一个数组$params = array("count" =&gt; "10", "username" =&gt; "blah", "password" =&gt; "password"); 等。您可以查看examples.php 文件。我相信它有一个 post 方法的工作示例
    【解决方案3】:

    如果不执行以下两项操作之一,则从服务器中提取推文时,您无法绕过速率限制:

    1)按时间间隔拉下推文并将其缓存在您的网站上

    2) 让用户验证自己并使用他们的令牌来拉推文

    当然有一个非常更简单的方法来做到这一点。在页面本身的 javascript 中请求时间线。这些时间线请求将计入​​查看页面的用户 IP,而不是您的服务器。

    这是一个包含一些 javascript 示例的网站:http://www.mivamerchant.com/blog/how-to-make-custom-twitter-feed-for-your-website

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-06
      • 2015-11-19
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多