我正在尝试将我的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"
}
我还需要做些什么才能确保包含此权限?
答案 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
的地方。