如何使用Facebook Javascript API将照片上传到用户的墙上(2014)

时间:2014-05-22 08:08:54

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

首先,我知道有很多关于同一主题的问题和答案,但它们似乎都不适合我...这可能是因为其中许多是2011年或2012年,以及FB API可能已经改变,方法可能已经过时了......让我简要总结一下我的问题:

我想做什么?

将存储在服务器中的PNG或JPEG照片上传到用户的墙上。

我该怎么做?

使用Facebook的Javascript API,大概是通过调用“FB.api()”。我一直在处理“FB.ui()”,我已成功上传了一些东西,但我不知道是否可以使用“ui()将简单的照片上传到用户的墙上“方法(希望如此!)。

我现在在做什么?

这是我现在正在运行的代码:

CocoonJS.Social.Facebook.api('/me/photos', 'post', 
    {
        message:'Luke: I am your Guinness',
        access_token: game.data.access_token, 
        url:'http://www.theagencyonline.co.uk/wp-content/uploads/2013/09/Darth-Vader-Guinness.gif'        
    }, function(response){
            if (!response || response.error) {
                alert('Error occured');
            } else {
                alert('Post ID: ' + response.id);
            }
});

我得到了什么?

奇怪的是,在调用此函数后,会弹出一个带有“Post ID”的警报,其中包含一个很大的数字(实际的帖子ID,我猜)。但是,墙上没有任何内容。我正在使用自己的帐户来测试它,我无法看到发布的帖子。

可能与问题有关的凌乱的事情(或不是):

  • 传说讲述用户的“访问令牌”:有些人认为这是关键参数,有些人甚至不使用它。

  • 有些人认为无法通过“/ me / photos”上传照片,而是通过“/ {user_id} / photos”。

  • 我的FB应用程序仍处于沙盒模式(未公开)。

最后,一个简单的问题可以解决整个事情......我已经能够通过“FB.ui()”而不是“FB.api()”发布内容,但我不能找到一种通过“ui()”发布照片的方法:你知道它是否可能?如果是这样,怎么办?

提前感谢您的时间和精力! :)

1 个答案:

答案 0 :(得分:0)

https://developers.facebook.com/docs/graph-api/reference/v2.0/user/photos/#publish的Facebook文档指定您应该使用编码的花括号来包装url参数内容:

url=%7Bimage-url%7D

奇怪的是你得到了photo_id。如果您查询此photo_id会怎样?

另外,请检查应用的默认发布设置。从FB为privacy字段引用:

  

如果未提供,则默认为授予应用的隐私级别   在登录对话框中。此字段不能用于设置更开放   隐私设置比授予的设置。