如何启用文件上传权限?

问题描述:

我正尝试将我的Flash应用程序中生成的图像上传到Facebook上的相册中。这是在今年年初的工作,但重温代码我现在得到以下OAuthException:如何启用文件上传权限?

(#324)需要上传文件

我使用的是最新的ActionSccript Facebook的API的版本。设置如下所示:

首先,我使用PHP进行身份验证检查,以确保用户在等待Flash加载之前已经授予权限。我正在请求publish_stream和user_photos权限。访问令牌可以正确返回。

一旦用户通过验证闪存加载和执行自己的初始化,通过fileUpload=true作为初始化对象的一部分:

var initObject:Object = { 
    channelUrl : "myChannelURL.html", 
    fileUpload : true 
} 
Facebook.init(
    'myAppID', 
    myCallbackFunction, 
    initObject, 
    myAccessToken 
); 

这似乎按预期运行,回调接收当前的UID用户。

在我的应用程序的最后,我发布一个位图对象,以预定相册:

Facebook.api(
    albumID+"/photos", 
    onImagePost, 
    { 
     message:"", 
     image:new Bitmap(myBitmapData), 
     fileName:'' 
    }, 
    URLRequestMethod.POST 
); 

此时的Facebook返回400响应:

"error": { 
    "message": "(#324) Requires upload file", 
    "type": "OAuthException" 
} 

更重要的是,我需要做的确保包含此权限?

事实证明,这根本不是一个权限错误。自从我上次部署这段代码以来,Facebook已经收紧了一些限制,并且作为api调用的一部分传递的fileName参数不能再是空字符串。只需将任何旧文本作为文件名进行修复就可以解决问题。

Facebook.api(
    albumID+"/photos", 
    onImagePost, 
    { 
     message:"", 
     image:new Bitmap(myBitmapData), 
     fileName:'FILE' // required to be non-empty 
    }, 
    URLRequestMethod.POST 
); 

我不确定这是否可以转换成Actionscript SDK的解决方案......但是,在PHP SDK中有一个名为setFileUploadSupport的facebook SDK中的方法 - 尝试在代码中寻找地点将该参数设置为true

+0

我看着这一点,但AS3 API实际上只是JavaScript API的,不具有相似的参数,据我所看到的上面的一层。我可以看到通过它的唯一方式是作为初始化对象中的一个参数,我已经这样做了。 – shanethehat