3

最近 Twitter 将其 API 更新到 v1.1,我的程序停止工作,但无论我阅读了多少文档,我似乎都无法真正理解使我的代码工作需要什么。

我以前的工作代码如下:

function getTweets() {

var url = 'http://search.twitter.com/search.json?q=%23yolo&rpp=10&result_type=recent&callback=?';

    $.getJSON(url, function (json) {

        display = [];
        displayDateTime = [];
        if (json.results.length != null) {
            for (var i = 0; i < json.results.length; i++) {
                var time = new Date(json.results[i].created_at);

                display.push("@" + json.results[i].from_user + ": " + json.results[i].text);
                displayDateTime.push("[" + time.toString().substring(0, 19) + "]");

            } //end of for loop

            display.reverse();
            displayDateTime.reverse();

            loadOtherStuffs();
        } //end of if
        else {
            setTimeout(getTweets, 24000);
        }
    });     //end of getJSON
}//end of getTweets()

我尝试将网址更改为https://api.twitter.com/1.1/search/tweets.json 但它仍然无法正常工作。似乎有必要再次进行这项工作,但我不太确定。 json.resultsjson.statusesoAuth

使这项工作再次发挥作用的具体步骤是什么?

4

1 回答 1

19

它不起作用的原因

In the wonderful world of bad ideas, Twitter is sunsetting this answer, as of May 2013, and will require, at minimum, that you either use one of their widgets, and shoehorn it in, or that you set up an application and do application-level authentication, even for public-timeline GET requests.[来自这篇文章]

这是完全正确的。您要么使用他们的 wigets 将某些东西“破解”在一起(非常不鼓励,如果他们更改了小部件中的一行代码,您的代码将完全停止工作),或者您按照他们的建议进行操作并使用 OAuth 和 1.1升级到经过身份验证的请求API。

您必须阅读的链接

因此,您不能只将 URL 中的/1/更改为/1.1/并期望它能够正常工作。

这篇文章解释了 1.0 API 是如何被弃用的,提供了来自 twitter 站点的证据,并解释了您需要如何执行经过身份验证的请求。

这篇文章有一些关于 1.1 API 以及它如何返回 JSON 格式数据的信息。

这篇文章解释了如果您从现在开始尝试向 1.0 API 发出任何请求,您将如何获得410 GONE状态,以及这意味着什么。

这篇文章解释了你得到的错误意味着什么

...最后,这篇文章逐步解释了如果您选择使用作为服务器端语言,您如何发出经过身份验证的请求并需要一个简单的库(单个文件包含)才能使其工作。

结束时

不要使用 JavaScript 一起破解一些东西,一旦 Twitter 更新了他们的小部件,就是这样,你被搞砸了。使用服务器端语言并按照他们的文档正确执行。

于 2013-06-20T08:42:14.003 回答