如何启用文件上载权限?

时间:2011-12-12 14:50:18

标签: actionscript-3 facebook-graph-api

我正在尝试将我的Flash应用程序中生成的图像上传到Facebook上的相册。这在今年早些时候工作,但重新访问代码我现在得到以下OAuthException:

  

(#324)需要上传文件

我正在使用最新版本的ActionSccript Facebook API。设置如下:

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

一旦用户通过身份验证,就会加载Flash并执行自己的初始化,并将fileUpload=true作为init对象的一部分传递:

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

这似乎按预期工作,回调接收当前用户的uid。

在我的应用程序结束时,我将Bitmap对象发布到预定的相册:

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

此时Facebook返回400响应:

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

我还需要做些什么才能确保包含此权限?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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