可以通过JavaScript读取/ statuses/user_timeline吗?

zzz*_*Bov 6 twitter jquery twitter-oauth

我以前用过一些jQuery在twitter上阅读推文:

$.ajax('https://api.twitter.com/1/statuses/user_timeline.json', {
    crossDomain: true,
    data: {
        screen_name: 'twitterapi',
        count: 5
    },
    dataType: 'jsonp'
}).done(function (tweets) {
    console.log(tweets);
});
Run Code Online (Sandbox Code Playgroud)

由于Twitter正在弃用他们的1.0 API,并且需要OAuth用于1.1 API,我一直试图弄清楚是否仍然可以以相同的方式获取推文数据.

只需将网址更改为:

https://api.twitter.com/1.1/statuses/user_timeline.json
Run Code Online (Sandbox Code Playgroud)

导致400 Bad Request没有消息的响应.

我知道有一个Twitter的工具来创建的请求OAuth的签名,但我不知道如何使用JSONP请求使用它,甚至如果它可以与JSONP请求中使用.

在Twitter 1.1 API中仍然可以读取用户的时间表吗?

red*_*nce 5

如果您查看Twitter的错误代码和响应,状态代码400表示:

请求无效.随附的错误消息将解释原因.这是版本1.0速率限制期间将返回的状态代码.在API v1.1中,没有身份验证的请求被视为无效,您将获得此响应.

因此,虽然400用于表示您的代码超出了速率限制,但现在它也会在请求未经过身份验证时返回.

要对请求进行身份验证,您必须添加Oauth Authorization标头.有一些可以帮助解决这个问题,但问题是要生成Oauth签名,您必须将应用程序的密钥(包括密钥)硬编码到客户端代码中,这将使其暴露到最终 - 用户(不是一个好主意).

最好的办法是在服务器上设置代理 - 让服务器使用Oauth头进行GET,并使用ajax从服务器获取推文.