2011-04-02 150 views
1

我搜索了周圍到處都沒有運氣,並發現很多示例上傳照片到Facebook時,用戶在會議中(即用戶身體坐在電腦和訪問網頁)。我試過樣品,他們工作。離線上傳到Facebook的照片與來自網絡服務器的照片

我注意到,從去年的這個懸而未決的問題就同一問題 Stackoverflow Question

我當前的應用程序讓用戶授權離線更新和我保存的access_token,USER_ID等,我可以成功地發佈到用戶在離線時會被關閉。

我真的很努力地把一些照片發佈到用戶牆上。閱讀Facebook documentation,我認爲你只能使用multipart/form-data上傳照片!?!?

如果用戶不在他們的計算機上,這將不起作用。您可以上傳存儲在我的服務器上的目錄中的照片嗎?

這是我的代碼到目前爲止。記住,這不會使用Facebook會話,因爲access_code已經被預先授權和存儲。正如我所提到的,張貼到用戶牆上已經可以使用這種方法。

$filename= "@/myphotodir/filename.jpg"); 
$url = "https://graph.facebook.com/".$uid."/photos"; //$uid is fb user id 
$ch = curl_init($url); 
$attachment = array('access_token' => $access_token, 
       'app_id'   => $app_id, 
       'name'    => "A photo from me...", 
       'fileUpload'  => true, 
       'message'   => "my message", 
       'image'    => $filename, 
     ); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result= curl_exec($ch); 
curl_close ($ch); 

編輯:$ result返回false ...忘了補充一點。

任何幫助,將不勝感激。 非常感謝, 院長

回答

0

你應該使用Facebook SDK。使用Facebook SDK,您可以使用:

$facebook->setFileUploadSupport(true); 
$parameters = array(
    'access_token' => 'ACCESS_TOKEN_HERE', 
    'message' => 'PHOTO_CAPTION', 
    'image' => '@' . realpath('/path_to_file.jpg') // Notice the @ sign 
); 
$facebook->api('/user_id/photos', 'post', $parameters); 

這會將照片發佈到其默認相冊。如果您將user_id替換爲album_id,則可以發佈到特定專輯。

+0

我以前試過,它沒有工作。但是,我再次嘗試以防萬一我錯過了某些內容,並且Facebook SDK期待Form Post Data(即期望您坐在您的機器上,通過表單上傳文件)。在離線上傳模式下,不會有任何表單發佈數據。來自SDK的確切錯誤消息如下。 ---->「致命錯誤:Uncaught CurlException:26:創建formobt數據失敗,在629行中引發/home/myforev3/public_html/library/facebook.php」 – Dean 2011-04-18 09:33:24

+0

我想做同樣的事情。 @Dean,你找到了解決辦法嗎?如果是這樣,請讓我知道。提前致謝 – 2013-03-12 12:22:23