2011-12-12 132 views
0

我正嘗試將我的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" 
} 

更重要的是,我需要做的確保包含此權限?

回答

1

事實證明,這根本不是一個權限錯誤。自從我上次部署這段代碼以來,Facebook已經收緊了一些限制,並且作爲api調用的一部分傳遞的fileName參數不能再是空字符串。只需將任何舊文本作爲文件名進行修復就可以解決問題。

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

我不確定這是否可以轉換成Actionscript SDK的解決方案......但是,在PHP SDK中有一個名爲setFileUploadSupport的facebook SDK中的方法 - 嘗試在代碼中尋找地點將該參數設置爲true

+0

我看着這一點,但AS3 API實際上只是JavaScript API的,不具有相似的參數,據我所看到的上面的一層。我可以看到通過它的唯一方式是作爲初始化對象中的一個參數,我已經這樣做了。 – shanethehat