画布 - > Base64发布到Facebook

时间:2014-08-14 10:57:06

标签: facebook facebook-javascript-sdk base64 facebook-canvas

我已经实现了一个纯javascript函数,用于将canvas内容共享到用户的facebook墙。实施工作,但问题是:

Facebook不批准​​该应用,在审核后说明:

  Web上的

publish_actions - 您应用的用户必须输入所有内容   在用户消息字段中。不要使用自动填充消息字段   任何内容,包括链接和主题标签,即使您允许用户使用   在共享之前编辑内容。观看此信息视频   更多信息,请参阅平台政策2.3“

Afaik,没有办法通过FB.ui feed共享对话框传递base64对象只与客户端javascript。

问题:任何变通方法或其他方法只能获得客户端画布 - > Facebook应用审批流程传递的Facebook共享实现?

目前的实施如下:

document.getElementById('facebook-link').onclick=function(){

        FB.login(function (response) {
            if (response.authResponse) {
                    window.authToken = response.authResponse.accessToken;
                    PostImageToFacebook(window.authToken);
            } else {

                }
            }, {
                scope: 'publish_actions'
            }); 
    };


function PostImageToFacebook(authToken) {

var imageData = canvas.toDataURL("image/png");
try {
    blob = dataURItoBlob(imageData);
} 
catch (e) 
{
    console.log(e);
}

var fd = new FormData();

fd.append("access_token", authToken);
fd.append("source", blob);

try {
    $.ajax({
        url: "https://graph.facebook.com/me/photos?access_token=" + authToken,
        type: "POST",
        data: fd,
        processData: false,
        contentType: false,
        cache: false,
        success: function (data) {
            console.log("success " + data);
        },
        error: function (shr, status, data) {
            alert.log("error " + data + " Status " + shr.status);
        },
        complete: function () {
            console.log("Posted to facebook");
             $('#facebook-link').text('Ferdig delt :)').removeClass( "inProgress" );
        }
    });

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

}

该实现不附加任何文本,让我想知道为什么它不符合Facebook平台政策第2.3节。

1 个答案:

答案 0 :(得分:0)

我在应用程序中遇到了同样的问题。虽然我们选择使用数据库,但我相信它可以解决您的问题。

真的无法通过FB.Ui分享Base64代码

但是作为Facebook的政策,您不需要使用它。

您可以创建一个自定义对话框窗口,供用户查看正在发布的图像并输入/确认消息,并在此操作后发布。

作为来自Facebook的解释性视频,用户发布的消息无法更改,那么它应该被批准没有问题。