2011-04-27 164 views
2

我想通过使用OAuth通过“使用twitter进行签名”进行身份验证后加载用户的家庭时间线。我正在使用这个库来处理认证部分https://github.com/jmathai/twitter-async如何通过ajax请求发送Twitter OAuth访问令牌?

身份验证部分工作正常,但我不清楚如何发送请求作为给定的身份验证用户的Twitter API。我想为用户的家庭时间表这样一个Ajax请求:

// this call produces "is not allowed by Access-Control-Allow-Origin" error 
$.getJSON("http://api.twitter.com/1/statuses/home_timeline.json", function(json) { 
    console.log(json); 
}); 

所以我的问题是我怎么令牌连同我的请求发送用户的访问,并在那里保存令牌?还是我接近这个问题错了?

+0

您已被[相同来源政策]阻止(http://en.wikipedia.org/wiki/Same_origin_policy)。您需要将其转换为[JSONP](http://en.wikipedia.org/wiki/JSONP)请求。 – 2011-04-27 13:59:30

+0

该库是一个PHP库,提供的代码是JavaScript。如果您希望JavaScript进行API调用,则需要使用JavaScript OAuth库。 – 2011-04-27 14:10:44

回答

3

您需要将此请求转换为JSONP请求,以便您可以执行跨域AJAX。

$.getJSON("http://api.twitter.com/1/statuses/home_timeline.json?callback=?", function(json) { 
    console.log(json); 
}); 

?callback=?将其转换为JSONP请求。

您提供的链接是针对PHP库的。如果您想使用JavaScript进行API调用,则需要使用JavaScript OAuth库。

+0

谢谢,将它转换为JSONP修复了相同的原点错误。我是在印象之下(http://stackoverflow.com/questions/1769713/using-only-jquery-to-update-twitter-oauth)只依靠javascript是一个坏主意。那么通过ajax请求调用一个php文件会更好吗?仍然不清楚访问令牌的存储位置以及如何将它传递给请求,无论它是php还是js。 – Moudy 2011-04-27 14:35:08

+0

我建议你使用你拥有的PHP库,并打电话给它。您可以对可以为您打电话的PHP脚本进行AJAX调用。 – 2011-04-27 14:43:00