这是一个非常简单的示例,调用 Twitter 的搜索 API 以从已知包含推文的标签 #fml 获取所有推文。
我相信我正确使用了仅应用程序身份验证,如下所述:https://dev.twitter.com/docs/auth/application-only-auth (有关调用的示例,请参阅步骤 3)
我被要求提供一个不涉及任何服务器端代码的解决方案,因此我将承载代码包含在 JavaScript 中,这在一开始就不好,但是......
我希望这段代码能够工作。相反,它会生成错误“400(错误请求)”。有什么想法吗?
$.ajax({
url: "https://api.twitter.com/1.1/search/tweets.json",
dataType: "jsonp",
data: "q=%23fml",
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Bearer XXmyBearerCodeXX");
},
success: function(json){ alert(json); }
});
编辑 1 - 经过验证的 Twitter 通话
使用hurl.eu我能够使用上述查询和授权 header 从 API 获得成功响应,因此我认为这意味着我的 Twitter 调用是正确的,只是在 jQuery.ajax() 中没有正确设置,但我只是看不到什么丢失了。
最佳答案
您无法使用数据类型为 JSONP 的 AJAX 调用来设置请求 header 。
查看这个问题:Set Headers with jQuery.ajax and JSONP?
最好的解决方案是使用服务器端代理来为您进行搜索。我知道您正在寻找仅限客户端的解决方案,但由于存在此限制,并且无法绕过 CORS,因此 Twitter API 目前似乎就是这样做的。
编辑 可以使用像 Yahoo's YQL 这样的代理。如果您无法访问其中之一。
关于ajax - 使用 jQuery $.ajax 调用 Twitter API 1.1 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17004070/