Javascript 在不进行身份验证的情况下将Twitter提要获取为JSON
几年前,我写了一个小JavaScript,它抓取了一条用户(我的)最近的推文,然后解析出来显示,包括链接、日期等 它使用这个json调用来检索推文,但它不再工作Javascript 在不进行身份验证的情况下将Twitter提要获取为JSON,javascript,twitter,Javascript,Twitter,几年前,我写了一个小JavaScript,它抓取了一条用户(我的)最近的推文,然后解析出来显示,包括链接、日期等 它使用这个json调用来检索推文,但它不再工作 http://twitter.com/statuses/user_timeline/radfan.json 它现在返回错误: {"errors":[{"message":"Sorry, that page does not exist","code":34}]} 我已经考虑过使用api版本(代码如下),但这需要进行身份验证,我宁愿避
http://twitter.com/statuses/user_timeline/radfan.json
它现在返回错误:
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
我已经考虑过使用api版本(代码如下),但这需要进行身份验证,我宁愿避免这样做,因为这只是为了在我的网站上显示我的最新推文,而我的个人资料页上无论如何都是公开的:
http://api.twitter.com/1/statuses/radfan.json
我没有跟上Twitter API的变化,因为我不再真正使用它了,有没有办法解决这个问题,还是不再可能了?正如您在中所看到的,使用REST API来实现这一点。幸运的是,我们可以使用(不使用OAuth)和from:[用户名]
操作符
例如:
将为您提供一个JSON对象,其中包含该用户的tweet,其中
将为您提供最后一条推文。您可以使用twitter api v1获取推文,而无需使用OAuth。例如:link将@jack最近的100条tweet链接
时间线文档是。以前,搜索API是唯一不需要某种形式的OAuth的Twitter API。现在它确实需要auth Twitter的搜索API是从第三方收购的——他们很少支持它,而且似乎不知道它的存在。除此之外,有效负载还有许多限制,包括但不限于在返回的JSON或XML文件中大大减少的key:value对 当我听到这件事时,我很震惊。我花了很长时间研究如何使用最少的代码来完成一个简单的GET请求(比如显示时间线) 我决定选择OAuth路径,以确保相关的有效负载。要做到这一点,您需要一种服务器端语言JavaScript对最终用户可见,因此在.js文件中包含必要的键和秘密是个坏主意 我不想使用大的库,所以我的答案是PHP和@Rivers'answer的帮助。下面由@lackovic10给出的答案描述了如何在身份验证中包含查询 我希望这有助于其他人节省时间思考如何使用Twitter的API来满足新的OAuth要求。方法“获取状态/用户时间线”需要用户身份验证,就像您在官方文档中看到的那样: 您可以使用不需要身份验证的搜索方法“GET search” 您有一个从这里开始的代码:
函数搜索Twitter(查询){
$.ajax({
网址:'http://search.twitter.com/search.json?'+jQuery.param(查询),
数据类型:“jsonp”,
成功:功能(数据){
var tweets=$(“#tweets”);
html(“”);
对于(数据中的res['results']){
追加(“”+data['results'][res]['from_user']+'写:'+data['results'][res]['text']+'
');
}
}
});
}
$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
变量参数={
q:$('#query').val(),
rpp:5
};
//警报(jQuery.param(params));
搜索推特(params);
});
})
如果您仍在寻找JSON中未经验证的推文,这应该可以:
这里有一个快速黑客(实际上是一个黑客,应该谨慎使用,因为它不是未来的证明),它用来抓取twitter站点上的最新推文
它的工作原理是使用anyorigin(使用它需要付费)来获取HTML。然后,它使用jquery解析HTML以提取出相关的tweet
移动站点上的tweet使用了一个div和class.tweet文本,所以这非常简单
相关代码如下所示:
$.getJSON('http://anyorigin.com/get?url=mobile.twitter.com/JonOlick&callback=?', function(data){
// Remap ... utf8 encoding to ascii.
var bar = data.contents;
bar = bar.replace(/…/g, '...');
var el = $( '<div></div>' );
el.html(bar);
// Change all links to point back at twitter
$('.twitter-atreply', el).each(function(i){
$(this).attr('href', "https://twitter.com" + $(this).attr('href'))
});
// For all tweets
$('.tweet-text', el).each(function(i){
// We only care about the first 4 tweets
if(i < 4) {
var foo = $(this).html();
$('#test').html($('#test').html() + "<div class=ProfileTweet><div class=ProfileTweet-contents>" + foo + "</div></div><br>");
}
});
});
$.getJSON('http://anyorigin.com/get?url=mobile.twitter.com/JonOlick&callback=?,函数(数据){
//重新映射…utf8编码到ascii。
var bar=data.contents;
bar=bar.替换(/g,“…”);
变量el=$('');
el.html(bar);
//更改所有链接以指向twitter
$('.twitter atreply',el).每个(函数(i){
$(this.attr('href',”https://twitter.com“+$(this.attr('href'))
});
//所有推文
$('.tweet text',el).每个(函数(i){
//我们只关心前4条推文
if(i<4){
var foo=$(this.html();
$('#test').html($('#test').html()+“+foo+”
”;
}
});
});
您无需登录即可通过高级搜索访问和浏览Twitter:
https://twitter.com/search?q=Babylon%205&src=typd
- q(我们的查询编码)
- src(假定为查询的源,即键入的)
all
您可以获得实时推文:
https://twitter.com/search?f=realtime&q=Babylon%205&src=typd
JSON内容
通过AJAX在页面上加载更多推文:
https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd&include_available_features=1&include_entities=1&last_note_ts=85&max_position=TWEET-553069642609344512-553159310448918528-BD1UO2FFu9QAAAAAAAAETAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
使用max_position
请求下一条推文
以下json数组返回刮取内容所需的所有内容:
https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd
- 有更多项目(bool)
- 项目(html)
- 最大位置(键)
- 刷新光标(键)
DOM元素的列表
作者在推特上写下了自己的名字
div.original-tweet[data-tweet-id]
作者姓名
div.original-tweet[data-name]
div.original-tweet[data-user-id]
作者的用户ID
div.original-tweet[data-name]
div.original-tweet[data-user-id]
邮戳
span._timestamp[data-time]
邮件的时间戳(毫秒)
span._timestamp[data-time-ms]
推文
p.tweet-text
转发次数
span.ProfileTweet-action–retweet > span.ProfileTweet-actionCount[data-tweet-stat-count]
Favo的数量
span.ProfileTweet-action–favorite > span.ProfileTweet-actionCount[data-tweet-stat-count]
资源
您可以使用Twitter API包装器,例如它提供了一组有限的Twitter API功能
TweetJs.ListTweetsOnUserTimeline("PetrucciMusic",
function (data) {
console.log(data);
});