错误“jsOAuth中的Access-Control-Allow-Origin不允许使用Origin null”

时间:2012-01-02 13:23:06

标签: oauth xmlhttprequest twitter cross-domain twitter-oauth

我正在尝试将twitter API与库jsOAuth一起使用。

完整的HTML

<div id="message">Loading..</div>

<script src="jsOAuth-1.3.3.min.js" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery-1.7.min.js" type="text/javascript"></script>
<script type="text/javascript">
        var oauth = OAuth({
            consumerKey: "-MY-KEY-",
            consumerSecret: "MY-SECRET"
        });

更新             oauth.get(“http://api.twitter.com/1/statuses/home_timeline.json?callback=?”,成功,失败);

        function success(data){
            $("#message").html("Sucess: " + data.text);
            var timeline = jQuery.parseJSON(data.text);
            console.log(timeline);
            $.each(timeline, function (element){
                console.log(element.text);
            });
        }
        function failure(data) {
            console.log("Throw rotten fruit, something failed");
            $("#message").html("Error" );
        }   
</script>

结果

Result

Full image

问题

  • 我做错了什么?
  • 如何在我的电脑上使用twitter API。

如果你能发给我,我会很感激任何例子。

谢谢大家。

1 个答案:

答案 0 :(得分:4)

  

我做错了什么?

您正在尝试向Twitter发送AJAX请求。您违反了跨域访问策略 - 您无法访问Twitter域上的数据。

  

如何在我的电脑上使用Twitter API?

选择一个:

  • 使用JSONP
  • 使用服务器端代理
  • 将您的代码存储在file://路径上,从而删除跨域限制
  • 更改浏览器的安全设置以允许此类访问。

我用斜体描绘了不太可能的那些。

此外,作为一名经验丰富的Twitter开发人员,我对您的代码有一个重要的注意事项:您使用Javascript访问API。虽然使用JS来做到这一点并不被禁止,但在javascript中使用OAuth是非常不安全的,如果您在网站上使用此代码,则从Twitter API中阻止。