2014-04-23 36 views
1

我花了数小时来解决此问题......但无法获得任何教程或示例。试图实施一些东西,但面临可怕的错误。在Twitter上使用javascript共享base64图像

我正在处理客户端幻灯片,并且似乎REST中的“POST status/update_with_media”Twitter的Api是特别设计用于共享图像数据url,但最初,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服务器上运行这个。任何例子或教程这将不胜感激。

谢谢。

回答

0

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

+0

谢谢,所以你的意思是没有办法从客户端执行Twitter图像共享,没有服务器的帮助? – filipvkovic

+0

如果你需要做一个POST,那么设置至少一个简单的代理是最好的选择。如果你可以用GET来完成,那么JSONP可能是一个选项。查看[corsproxy](http://www.corsproxy.com/)和[apitools](http://www.apitools.com)以获取使用外部代理设置CORS的简单解决方案。我也是[Apirise](http://www.apirise.com)的创始人,它将提供类似的功能。 – fxenik

相关问题