使用Javascript graph API v2.5将照片作为multipart / form-data发布到Facebook

时间:2015-11-10 16:17:44

标签: javascript facebook-graph-api multipartform-data todataurl

Facebook的图谱API(v2.5)用户Photo Edge表示有两种不同的方式将照片发布到Facebook:

1:将照片作为multipart / form-data附加。对象的名称并不重要,但历史上人们已经使用source作为照片的参数名称。如何工作取决于你碰巧用来做帖子的SDK。

2:使用url参数发布,使用互联网上已有的照片:

FB.api(
        "/me/photos",
        "POST",
        {
            "url": "{image-url}"
        },
        function (response) {
          if (response && !response.error) {
            /* handle the result */
          }
        }
);

我需要使用第一个方法(multipart),因为我从画布获得了base64图像数据。

这似乎令人困惑,因为我发现这些文档信息非常丰富。据我所知,图像的urlData将在多部分数据中以某种格式与其他参数一起编码。我没有找到任何有用的示例代码/正确解释如何使用Javascript SDK& graph api v2.5;即使在stackoverflow上进行了详尽的搜索之后。我已经在stackoverflow上看到了关于这个的各种部分回答/未回答的问题...但我仍然无法使其工作。

请帮忙。谢谢 !

类似问题
Facebook Javascript Form Data Photo Upload: requires upload file error
Javascript: Upload image from Canvas to FB via Graph API
Upload Base64 Image Facebook Graph API - 不清楚Javascript Api是否在这里

[编辑] - 我已经尝试过的代码。

var ctx = document.getElementById('canvas2');
urldata=ctx.toDataURL("image/png");
FB.api('/photos', 'POST', {
  message: 'testing Graph API',
  access_token:  accessToken,
  url: urldata,
  no_story:true
  }, function (response) {
    if (!response || response.error) {
      console.log('Error occured:' + response.error.message);
    } else {
    alert('Post ID: ' + response.id);
    } 
    } 
);

回复 - " 发生错误:(#324)图像文件丢失或无效"

1 个答案:

答案 0 :(得分:0)

我无法使用JS SDK,但它适用于简单的AJAX请求(使用Fetch API,axios或其他东西)。

首先,使用以下功能将Canvas Image转换为Blob:

const dataURItoBlob = (dataURI) => {
    let byteString = atob(dataURI.split(',')[1]);
    let ab = new ArrayBuffer(byteString.length);
    let ia = new Uint8Array(ab);
    for (let i = 0; i < byteString.length; i++) {
        ia[i] = byteString.charCodeAt(i);
    }
    return new Blob([ia], {
        type: 'image/jpeg'
    });
}

之后,您可以将博客与FormData一起使用:

formData.append('source', blob);

来源:http://www.devils-heaven.com/facebook-javascript-sdk-photo-upload-from-canvas/

相关问题