我已经实现了一个纯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节。
答案 0 :(得分:0)
我在应用程序中遇到了同样的问题。虽然我们选择使用数据库,但我相信它可以解决您的问题。
真的无法通过FB.Ui分享Base64代码
但是作为Facebook的政策,您不需要使用它。
您可以创建一个自定义对话框窗口,供用户查看正在发布的图像并输入/确认消息,并在此操作后发布。
作为来自Facebook的解释性视频,用户发布的消息无法更改,那么它应该被批准没有问题。