2014-04-23 37 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

相關問題