【问题标题】:PHP mysql Twitter API 500 errorPHP mysql Twitter API 500 错误
【发布时间】:2013-06-28 08:17:48
【问题描述】:
<?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 提要中获取信息。但它返回从“screenName”保存的 0 条新推文。有人可以帮忙吗?

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

【问题讨论】:

    标签: php mysql api twitter cron


    【解决方案1】:

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

    【讨论】:

    • 但是我尝试替换像“api.twitter.com/1.1/statuses/user_timeline.xml”这样的网址也不起作用:(
    • 现在它需要认证,所以你必须使用 twitter oauth 库来获取结果。这是 twitter 控制台的链接,[dev.twitter.com/console]。在这里你可以看到 status/user_timeline 不会在没有登录的情况下返回结果
    • 你能解释一下吗?老实说,这是我第一次使用 API。
    • 这是 twitter oauth 库,你必须使用这个库来获得你想要的结果 [github.com/abraham/twitteroauth].试试这个:)
    • 我不能 +1 因为我没有足够的声誉:p
    【解决方案2】:

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

    我个人认为API documentation很糟糕,建议你阅读this StackOverflow post

    希望这会有所帮助。

    【讨论】:

    • 非常感谢。如果需要帮助,我会再来的。
    • 我按照那篇文章中的步骤进行操作。创建了一个应用程序,获取身份验证密钥。但是有没有办法使用我上面发布的相同代码和身份验证键来获取提要。我试图修改该帖子上的代码,但它不起作用
    【解决方案3】:

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

    <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>
    

    【讨论】:

    • 感谢@DevZer0 其实我知道这一点,但我找不到更新的 API。在我见过的所有教程中,他们只有这个 API。你知道最新的 API url。顺便说一句,我将更改标题,因为我修复了 500 服务器错误
    • 它将是 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=
    • 我试过了,但这不起作用@JayHardia 说它需要身份验证,但实际上我不知道如何执行该 API 调用。如果可能的话,你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多