如何启用文件上传权限?
问题描述:
我正尝试将我的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
。
我看着这一点,但AS3 API实际上只是JavaScript API的,不具有相似的参数,据我所看到的上面的一层。我可以看到通过它的唯一方式是作为初始化对象中的一个参数,我已经这样做了。 – shanethehat