2012-11-01 47 views
1

我在使用facebook api將照片發佈到頁面牆上時遇到了問題。如果我通過php上傳文件,並使用$ _FILES [] [「tmp_name」]作爲我的$ filelocation,它工作正常。但是,如果我將$ filelocation更改爲本地文件路徑(/tmp/1351750505-24d.jpg),則不起作用。

我已經給了我的/ tmp目錄777,並確保我的文件是777以及消除任何權限問題。我還使用了多個文件來確保它不僅僅是一個文件的問題。

我唯一的想法是,這可能是一個在php.ini中的隨機設置,但我沒有看到任何瞪着我的東西。

錯誤日誌:

[Thu Nov 01 06:52:13 2012] [error] [client 66.x.x.x] {"error":{"message":"(#1) An unknown error occurred","type":"OAuthException","code":1}}, referer: http://origin.example.com/adder/index.php 
[Thu Nov 01 06:52:13 2012] [error] [client 66.x.x.x] $filelocation = /tmp/1351752730-24e.jpg, referer: http://origin.example.com/adder/index.php 




[[email protected] adder]$ ll /tmp/1351750505-24d.jpg 
-rwxrwxrwx 1 apache apache 331 Nov 1 06:15 /tmp/1351750505-24d.jpg 


$facebook->setFileUploadSupport(true); 
$post_id = ""; 

try 
{ 
    $post_id = $facebook->api("/$page_id/photos", 'POST', 
           array(
            'source' => '@' . $filelocation, 
            'message' => $name 
           )); 
    error_log("\$filelocation = " . $filelocation); 
} catch (FacebookApiException $e) 
{ 
    $result = $e->getResult(); 
    error_log(json_encode($result)); 
    $post_id["id"] = "FAIL!"; 
    error_log("\$filelocation = " . $filelocation); 

} 
+0

我認爲,而不是本地路徑,如果你給該圖像完整的網址,它會工作。它適用於JavaScript的SDK不知道關於PHP。嘗試使用**「url」**參數而不是**「source」**並給出以https://開頭的完整url路徑... // –

+0

感謝您使用url而不是源代碼作品,我可以使用它作爲解決方法通過我的積壓。如果有人知道如何解決我的源代碼問題,或者有一些我可能錯過的有用的故障排除步驟,請告訴我。 –

+0

如果您查看[圖形API照片文檔](https://developers.facebook.com/docs/reference/api/photo/)中的'source'字段說明,它應該是一個「**代表有效網址**」。 Facebook無法在您的服務器上抓取本地路徑。 – cpilko

回答

0

當我設置$filelocation/tmp/somefile.jpg其職位的本地路徑/文件罰款。我注意到你的代碼和我的代碼之間的一個區別:包括我在POST調用的頁面訪問令牌:

$local_path = '/tmp/water96x96.jpg'; 

$args = array(
    'access_token' => $page_info['access_token'], 
    'message' => 'Testing photo upload via SDK!', 
    'source' => '@'.$local_path, 
); 

$post_id = $facebook->api('/'.$page_id.'/photos', 'post', $args); 

讓頁面訪問令牌,我做的:

$page_info = $facebook->api('/'.$page_id.'?fields=access_token'); 

在一個記錄用戶是具有manage_pages權限的頁面的管理員。

相關問題