2013-02-03 98 views
1

我正在開發一個Facebook應用程序,它在圖像中給出結果。無法發佈圖像到Facebook

我使用PHP gd庫進行編碼,它是動態的。

當您訪問該頁面 - 「http://example.com/result.php?name=your名稱」時,它會輸出一個圖像文件,並在URL中給出您的名稱。 我的問題是將此圖像發佈到Facebook用戶的照片流中。用戶可以看到輸出,但是當我嘗試後,它會顯示

Fatal error: Uncaught CurlException: 26: couldn't open file " http://mysite.orgfree.com/result.php?name=bestapp " thrown in /home/vhosts/powerofname.orgfree.com/base_facebook.php on line 977

這裏是我用來張貼

$facebook->setFileUploadSupport(true); 
$ret_obj = $facebook->api('/me/photos', 'POST', array(
    'source' => '@'.'http://mysite.orgfree.com/result.php?name='.$name, 
    'message' => 'Blah blah' 
)); 

我將不勝感激,如果任何人能發現我的問題的代碼。

+0

檢查文件是否存在,檢查您對該文件的權限,並且該PHP/Apache用戶有權讀取該文件。在構建facebook調用之前,可以使用file_exists()和is_readable()來完成此操作。 可能的重複:http://stackoverflow.com/questions/11062427/fatal-error-uncaught-curlexception-26-failed-creating-formpost-data-thrown – Chris

回答

1

您必須爲文件系統上的映像提供路徑,而不是在網絡上。所以你必須下載鏡像,將其保存到文件中,提供該文件的路徑,從磁盤上傳和刪除鏡像。

$tmpfile = tempnam(__DIR__,'fbu'); 
file_put_contents($tmpfile, 'http://powerofname.orgfree.com/result.php?name='.$name); 
$ret_obj = $facebook->api('/me/photos', 'POST', array(
    'source' => '@'.$tmpfile, 
    'message' => 'Blah blah' 
)); 
unlink($tmpfile); 
+0

但我在免費託管公司託管。我如何在目錄上創建臨時文件? –

+0

通常通過使用ftp創建文件夾併爲其設置寫入權限來完成。 –

2

如果是圖像(而不是實際的上傳)提供HTTP URL,那麼你必須使用參數url代替source

$ret_obj = $facebook->api('/me/photos', 'POST', array(
    'url' => 'http://mysite.orgfree.com/result.php?name='.$name, 
    'message' => 'Blah blah' 
)); 
+0

你救了我一天的男人... – Sandeep