使用JavaScript上传Facebook照片不起作用

Facebook photo upload with JavaScript is not working

本文关键字:照片 不起作用 Facebook 上传 JavaScript 使用      更新时间:2023-11-22

我需要为construct 2插件编写一个javascript代码。下面是我的代码:

Acts.prototype.PublishToWallPHOTO = function (snapshotdata)
	{
		if (this.runtime.isDomFree || !fbLoggedIn)
			return;		
var blob; 
	 try
	 {
 blob = dataURItoBlob(snapshotdata.replace("data:image/png;base64,", ""),'image/png');
         }
	 catch(e){console.log(e);}
			
		
		FB.api('/me/photos', 'POST', {
        message:'photo description',
        source:blob        
    }, function(response) {
	if (!response || response.error)
		console.error(response);
			});
	};
	
	
function dataURItoBlob(dataURI,mime)
{
     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: mime });
     return blob;
}

"snapshotdata"的上述代码参数如下:"data:image/png;base64,iVBORw0KGgoAAAA…………"

但我的图片并没有用上面的代码上传到脸书上。但使用相同的代码,如果我使用CCD_ 1而不是CCD_。我试图找出上面代码的错误,但我找不到合适的解决方案。如果有人知道以上代码的问题,请告诉我。

ps:很抱歉英语不好

也许FormData()可以做到这一点。

function uploadPicture(response) {
  if (response.status === 'connected') {
    var blob = dataURItoBlob(imageHolder.imageElement.dom.src.replace("data:image/png;base64,", ""),'image/png');
    var fd = new FormData();
    var token = response.authResponse.accessToken;
    fd.append("access_token",token);
    fd.append("source'"; filename='"" + "test.png" + "'"", blob);
    fd.append("message","Test");
    try{
      $.ajax({
        url:"https://graph.facebook.com/me/photos?access_token=" + token,
        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("Ajax Complete");
      }
    });
    }catch(e){console.log(e);}
  }
}