2014-02-06 126 views
1

嘗試一些數據發佈到我的牆,我想出錯誤圖形API發佈的base64 IMG給Facebook

我一直在引用這個帖子主要是:Upload Base64 Image Facebook Graph API

但我堅持,並保持接收400來自FB的錯誤響應。
並參考這一點,我檢查我的電話,我的數據對象是空的(這是我認爲是造成400錯誤)。

這是我有:

function publishStream(img) 
     { 
      var accessToken = ""; 

      FB.getLoginStatus(function(response) 
      { 
       if (response.status === 'connected') 
       { 
       var uid = response.authResponse.userID; 
       accessToken = response.authResponse.accessToken; 
       } 
       else if (response.status === 'not_authorized') { 
       // the user is logged in to Facebook, 
       // but has not authenticated your app 
       } 
       else { 
       // the user isn't logged in to Facebook. 
       } 
      }); 

      var imageData = img; 
      try{ 
       blob = dataURItoBlob(imageData); 
      } 
      catch(e){ 
       console.log(e); 
      } 

      var fd = new FormData(); 
      fd.append("access_token",accessToken); 
      fd.append("source", blob); 
      fd.append("message",""); 

      try{ 
       $.ajax({ 
        url:"https://graph.facebook.com/me/photos?access_token=" + accessToken, 
        type:"POST", 
        data:fd, 
        processData:false, 
        contentType:false, 
        cache:false, 
        success:function(data){ 
         console.log("success " + data); 
        }, 
        error:function(shr,status,data){ 
         console.log("error " + data + " Status " + shr.status); 
        }, 
        complete:function(){ 
        console.log("Posted to facebook"); 
        } 
       }); 

      } 
      catch(e){ 
       console.log(e); 
      } 
     } 

     function dataURItoBlob(dataURI) { 
      var byteString = window.atob(dataURI); 

      var ia = new Uint8Array(byteString.length); 
      for (var i = 0; i < byteString.length; i++) { 
       ia[i] = byteString.charCodeAt(i); 
      } 
      var blob = new Blob([ia], { type: 'image/png' }); 

      return blob; 
     } 

其中參數IMG是base64編碼的圖像。

這是我所得到的來自錯誤的請求數據:

{ "data": [ ] } 

任何人都可以引導我到終點線???任何幫助表示讚賞!

回答

0

你有沒有下https://developers.facebook.com/docs/graph-api/reference/user/photos/#publish

讀FB上的文檔Apparantly的sourceblob需要使用轉義大括號微膠囊:如果您嘗試

fd.append("source", '%7B' + blob + '%7D'); 

而且

source=%7Bimage-data%7D 

會發生什麼,在Upload Base64 Image Facebook Graph API的答案中的一條評論中,聲稱它將「刪除」data:image/png; base64「部分發送給Blob轉換器rsion」。你試過這個嗎?