如何使用PHP连接Twitter流API?

3

我成功地使用xx获取了我的用户时间线,以在我的网站上显示。

$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)打开流的示例,但这可能在某些Web服务器上不可行(我可能无法访问命令行)。

我希望有人能够为我提供一个简单的PHP/AJAX/JQuery网页代码,但不包括Ruby/Python,该页面可以获取用户时间线上最新的10条推文。目前我并不关心它是否轮询等,只需在页面加载时简单获取推文即可!
因此,我需要一个简单的示例(例如,不必担心CSS / 使JSON响应易读等),类似于TwitStream,但用于获取用户时间线并在网页上显示它们。
3个回答

0

如果您从服务器拉取推文而不执行以下两个操作之一,则无法避免速率限制:

1)按时间间隔下载推文并将其缓存到您的站点上

2)让用户进行身份验证并使用他们的令牌来拉取推文

当然,有一种更简单的方法可以做到这一点。在页面本身上使用JavaScript请求时间线。这些时间线请求将计入查看页面的用户的IP,而不是您的服务器。

这里有一个网站提供了一些JavaScript示例:http://www.mivamerchant.com/blog/how-to-make-custom-twitter-feed-for-your-website


0

谢谢提供链接。不幸的是,这个链接似乎也使用了我上面描述的第一种方法,而该方法受到速率控制。我需要一个明确使用“Streaming”API的示例。 - Sonoman
@chris 你知道这个post参数是什么吗?如果你知道,你可以使用这个类中的submitPOST($param, $url)函数,它基本上就是那个命令行curl的php版本。https://github.com/KartikTalwar/Scraper-Class - Kartik
如果我正确理解了https://dev.twitter.com/docs/streaming-api/methods,我相信POST方法应该是http://stream.twitter.com/1/statuses/filter.json,然后我可以构建$params,例如$params = count=10 - Sonoman
@Chris,$params 需要是一个关联数组,所以你需要创建一个数组 $params = array("count" => "10", "username" => "blah", "password" => "password"); 等等。你可以查看 examples.php 文件。我相信它有一个工作的 post 方法示例。 - Kartik

0

你是在寻找类似这样的东西吗?

`<?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/

谢谢您的回复。那似乎与我之前使用的相当类似。我以为应该使用流API(例如stream.twitter.com)来避免速率限制问题? - Sonoman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接