需要帮助转换到Twitter API v1.1 - JavaScript。

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

我尝试将URL更改为 https://api.twitter.com/1.1/search/tweets.json 并将 json.results 更改为 json.statuses,但仍然无法工作。似乎需要进行 oAuth 才能使其再次运行,但我不太确定。
请问如何确切地操作以使其再次运行?

你调试过了吗?它停在哪一行了? - LuigiEdlCarno
我无法从$.getJSON开始进入任何内容。它只是突出显示其中的所有内容,然后转到getJSON的结尾。这在之前就已经是这样了。我正在使用Visual Studio 2010。 - Edeson Lee Yan Wei
我添加了一些标签,这样更懂js的人可以帮助你。同时,你确定你的url是正确的吗?API更新是否改变了get参数?你有检查过API变更日志,看看有什么被更改了吗? - LuigiEdlCarno
我将 #yolo 编辑为 %23yolo,这是正确的 URL。
是的,在 Twitter 最近更新到 v1.1 之前,URL 运行良好。
以前的工作版本:链接
当前的 v1.1 版本:链接
我从这两个版本中发现的区别是 URL 更改为 'https://dev.twitter.com/docs/api/1.1/get/search/tweets.json?q=%23yolo&count=10&result_type=recent&callback=?',并且我尝试将 json.results 更改为 json.statuses,但仍然失败了。
- Edeson Lee Yan Wei
1个回答

19
问题出在哪里

在愚蠢的想法世界里,Twitter于2013年5月停止了此答案,并要求您至少使用其小部件之一,并将其塞入其中,或者设置一个应用程序并执行应用程序级身份验证,即使是公共时间线GET请求也需要。 [来自此帖子]

这是完全正确的。你可以通过他们的小部件进行“黑客攻击” (高度不建议使用,如果他们在他们的小部件中更改了一行代码,你的代码将完全停止工作),或者按照他们的建议升级到使用OAuth和1.1 API的身份验证请求

必须阅读的链接

所以,你不能只是在URL中将/1/改为/1.1/,然后期望它能正常工作。

这篇文章解释了1.0 API已经过时的原因,并提供了来自Twitter网站的证据,同时解释了你需要执行身份验证请求的方法。

这篇文章提供了一些关于1.1 API及其返回JSON格式数据的信息。

这篇文章解释了如果你现在尝试从1.0 API获取任何请求,你将得到一个410 GONE状态以及它的含义。

这篇文章解释了你所遇到的错误的含义

...最后,这篇文章逐步说明了如何使用作为服务器端语言来进行身份验证并只需要包括一个简单的库(单个文件)即可轻松实现。

最后

不要尝试使用JavaScript抢救,一旦Twitter更新他们的小部件,你就完了。请按照官方的文档使用服务器端语言并正确地完成。


谢谢您,我会去阅读它们。一开始我并不知道自己在进行黑客行为,也不知道如何正确获取推特的方式,因为我是从这个网站上获取代码的。 - Edeson Lee Yan Wei
我认为Jimbo并不是指你的旧代码是黑客行为,而是你不要使用“hack”来尝试在纯Javascript中使API 1.1正常工作。 - Strille
是的,如果不够清晰,我很抱歉。任何仅使用JavaScript的解决方案都是“hacky”的,并且容易出错(而且它们也更难处理)。 - Jimbo
1
非常感谢。我一直在到处寻找这样的摘要。 - NcAdams

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