2013-07-01 151 views
-1
<?php 
    function saveTweets($screen_name) { 
     $db = array("h"=>"localhost", "u"=>"user", "p"=>"pass", "n"=>"db"); 
     $dbconnect = mysql_connect($db['h'], $db['u'], $db['p']); 
     $dbselect = mysql_select_db($db['n']); 
     $screen_name = mysql_real_escape_string(strtolower(trim($screen_name))); 
     if (!$screen_name) { 
      echo "<p><strong>Error: No screen name declared.</strong></p>\n"; return false; 
     } 
     $row = mysql_query("SELECT `id` FROM `twitter` WHERE `screen_name`='$screen_name' ORDER BY `id` DESC LIMIT 1"); 
     $row = mysql_fetch_array($row); 
     $last_id = $row['id']; 
     $url = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=$screen_name" ; 
     if ($last_id) { 
      $url .= "&since_id=$last_id" ; 
     } 
     $ch = curl_init($url); 
     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     $xml = curl_exec ($ch); 
     curl_close ($ch); 
     $affected = 0; 
     $twelement = new SimpleXMLElement($xml); 
     foreach ($twelement->status as $status) { 
      $text = mysql_real_escape_string(trim($status->text)); 
      $time = strtotime($status->created_at); 
      $id = $status->id; 
      mysql_query("INSERT INTO `twitter` (`id`,`screen_name`,`time`,`text`,`hidden`) VALUES ('$id','$screen_name','$time','$text','n')"); 
      $affected = $affected + mysql_affected_rows(); 
     } 
    return "<p>".number_format($affected)." new tweets from $screen_name saved.</p>\n" ; 
    } 
    echo saveTweets('screenName'); 
?> 

我试图用这个脚本来抓取我的twitter feed。但它会返回0个新的推文,它们是从'screenName'保存的。有人可以帮忙吗?PHP mysql Twitter API 500错误

注意:我实际上用许多帐户和我的朋友取代了screenName。

回答

3

在twitter api 1.0退休后,现在几乎所有数据都来自twitter,都是通过身份验证。您可以通过以下链接阅读所有详细信息链接 Twitter user timeline

+0

但我试图更换像“http://api.twitter.com/1.1/statuses/user_timeline.xml”这样的网址,但它不能正常工作:( –

+0

现在它需要身份验证,因此您必须使用twitter oauth库来获取结果。这里是链接twitter控制台,[https://dev.twitter.com/console]。在这里你可以看到status/user_timeline不会返回结果没有登录 –

+0

你能解释一下吗?说实话这是第一次我正在使用API​​ –

2

您的代码无法正常工作,因为您使用了弃用的API。以下是来自Feed的输出。

<errors> 
<error code="68"> 
The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview. 
</error> 
</errors> 
+0

谢谢@ DevZer0 其实我知道这一点,但我找不到更新的API。在所有教程中,我都看到他们只有这个API。你知道最新的API网址吗?顺便说一句,我将更改标题,因为我修复了500服务器错误 –

+0

它将是json api,“https://api.twitter.com/1.1/statuses/user_timeline.json?username ='和xml'http: //api.twitter.com/1.1/statuses/user_timeline.xml?screen_name =' – DevZer0

+0

我试过这个,但这不起作用@JayHardia说它需要验证,但实际上我不知道如何执行该API调用。你能解释一下吗? –

2

您使用Twitter API 1.0的脚本不再处于活动状态。

我个人认为API documentation是可怕的,我建议你读this StackOverflow post

希望这会有所帮助。

+0

非常感谢,如果我需要帮助,我会再次回来 –

+0

我按照那篇文章中的步骤创建了一个应用程序,提供了授权密钥。方式来使用我上面发布的相同的代码与auth键来抓住饲料。我试图修改该帖子上的代码,但它不工作 –