使用javascript在Twitter上共享base64图像

时间:2014-04-23 19:03:55

标签: javascript ajax twitter

我花了几个小时来解决这个问题...但是没有得到任何教程或示例。试图实现一些但面对可怕的错误。

我正在研究客户端幻灯片,似乎Twitter的REST Api中的“POST status / update_with_media”专门用于共享图像数据网址,但最初,Twitter文档很差,并且没有示例代码。我甚至不确定如何在ajax请求中提供user_secret,user_token,consumer_key和consumer_secret。这就是我所做的。

        var fd = new FormData();
        fd.append("oauth_consumer_key", "knC68njKLjXrRljSxhE3uywsi");
        fd.append("status", "");
        fd.append("media[]", base64_string);

        $.ajax({
            url:"https://api.twitter.com/1.1/statuses/update_with_media.json",
            type:"POST",
            data:fd,
            processData:false,
            contentType: "multipart/form-data",
            cache:false,
            success:function(data){
                alert('Post was published.');
            },
            error:function(shr,status,data){
                alert('Post was not published.');
            },
            complete:function(){
            }
        });

我知道这是一次糟糕的尝试,但这就是我所能做的。这给出了以下错误。

XMLHttpRequest cannot load https://api.twitter.com/1.1/statuses/update_with_media.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.101' is therefore not allowed access. 

我在本地php服务器上运行它。任何示例或教程都将受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

我不知道这个API调用的具体细节,但是从第一眼看,你不能对服务器进行ajax调用,而不是你的页面来自的服务器。因此,除非twitter支持CORS,否则您无法对twitter api进行ajax调用。您收到的错误消息表明这一点。解决此问题的唯一方法是通过服务器进行twitter api调用,然后让您的页面调用服务器进行ajax调用。