我在另一个SA帖子的帮助下整理了一个脚本,但我遇到的问题是它总是返回错误。使用控制台日志记录错误时,它不包含任何属性,因此无法确定我收到错误的原因。
$(".add-image").click(function() {
FB.login(function(response) {
if (response.authResponse) {
var imgURL="http://farm4.staticflickr.com/3332/3451193407_b7f047f4b4_o.jpg";
FB.api('/album_id/photos', 'post', {
message:'Test',
url:imgURL
}, function(response){
if (!response || response.error) {
console.log(response);
} else {
alert('Post ID: ' + response.id);
}
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {scope: 'publish_stream'});
});
我已经创建了应用。在包含Javascript时添加了API ID。
跑步时我弹出一个要求我登录的弹出窗口,似乎没有问题就登录了我。但是在检查响应或响应时它会返回错误。
任何建议。
答案 0 :(得分:1)
不确定这对你来说是否还是一个问题,但我最近一直在研究同样的事情,我相信,对于这种类型的上传,FB基本上需要source
作为图像数据本身,而不是图像的URL。 (请参阅https://developers.facebook.com/docs/reference/api/album/上的创建照片部分 - 它表示source
参数必须为multipart/form-data
。)
所以你有一些解决方法:
1)如果可以创建自定义Open Graph对象,则可以从JS执行此操作。我还没有尝试过这个,但https://developers.facebook.com/docs/opengraph/usergeneratedphotos/看起来好像需要一个URL而不是帖子数据本身。
2)如果图像来自用户的计算机,您可以创建一个提交到FB的HTML表单,并使图像直接从用户转到FB,而不会命中您的服务器。这篇博文显示了一个例子:https://developers.facebook.com/blog/post/498/
3)如果图像来自您的系统,您可以从服务器对FB进行POST,模仿上述表格。如果它在其他地方(例如Flickr),您可以先将其下载到您的系统,然后将其发送到FB。您必须在请求中包含access_token
。我不知道您在服务器上使用的语言/框架,但可能有一个库可以更轻松地创建POST请求。