使用Facebook JS SDK上传图像

时间:2011-12-17 23:31:07

标签: facebook

我在另一个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。

跑步时我弹出一个要求我登录的弹出窗口,似乎没有问题就登录了我。但是在检查响应或响应时它会返回错误。

任何建议。

1 个答案:

答案 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请求。