2011-04-02 149 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