最近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.results
更改为json.statuses
,但仍然无效。似乎需要oAuth
再次使这项工作,但我不太确定。
让这项工作重新开始的步骤是什么?
答案 0 :(得分:18)
无效的原因
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.
[ From this post ]
这是完全正确的。你要么使用他们的wiget“hack”在一起(非常气馁,如果他们在他们的小部件中更改了一行代码,你的代码将完全停止工作),或者你做他们建议并升级到经过身份验证的请求,使用OAuth和1.1 API。
您必须阅读的链接
因此,您无法在网址中将 / 1 / 更改为 /1.1 / ,并希望它能够正常运作。
This post解释了如何弃用1.0 API,从twitter网站提供证据,并解释了如何执行经过身份验证的请求。
This post提供了有关1.1 API以及它如何返回JSON格式数据的一些信息。
This post说明了如果您尝试从现在开始向1.0 API发出任何请求,您将获得410 GONE
状态,以及这意味着什么。
This post解释了您获得的错误意味着什么
...最后,This post逐步解释了如果您选择使用php作为服务器端语言,您可以进行经过身份验证的请求并需要一个简单的库(单个文件包括)让它工作。
结束
一旦Twitter对其小部件进行更新,就不要使用JavaScript一起破解某些东西,就是这样,你就搞砸了。使用服务器端语言并按照documentation正确执行。