2013-03-30 3 views
1

, обеспечивающего выбор на сайте, чтобы нажать и загружать изображения на Facebook: Получил этот код после поискаFacebook PHP SDK Загрузить изображения - Путь изображения

$pic = $_GET['PhotoID']; //example: http//www.mysite.com/content/2013/03/image.jpg 
copy($pic, 'tmp/file.jpg'); 
$args['image'] = '@' . realpath('tmp/file.jpg'); 
$publish = $facebook->api('/me/photos', 'post', $args); 
unlink('tmp/file.jpg'); 

Этот код работает отлично. Но копирование изображения в tmp займет некоторое время. Я хочу ускорить процесс. (загрузка изображений с моего сайта только отсутствие внешнего изображения)

Как я могу использовать этот код без копирования в TEMP:

$pic = $_GET['PhotoID']; //example: http://www.mysite.com/content/2013/03/image.jpg 
    $args['image'] = '@' . realpath('$pic'); 
    $publish = $facebook->api('/me/photos', 'post', $args); 

не уверен об использовании «@» & Realpath Могу ли я использовать полное изображение URL без использования Realpath:

`$args['image'] = $pic; 
     $publish = $facebook->api('/me/photos', 'post', $args);` 

&, что это лучший способ, чтобы показать сообщение об ошибке, если пользователь ДНТ авторизовать приложение. или ошибки как Фатальная ошибка: Uncaught OAuthException происходит

+0

контроль http://stackoverflow.com/a/14726580/718224 & http://stackoverflow.com/a/14937938/718224 –

+0

@AdvaitAmin жаль его не связано с Ques. Я хочу пример кода с абсолютным путем изображения (полный URL-адрес изображения) – Vehlad

+0

ваша проблема заключается в копировании изображения в tmp требуется некоторое время, чтобы ускорить процесс означает, что процесс загрузки занимает слишком много времени ... –

ответ

0

Я сделал то же самое в моем приложении, Jst пойти с этим .. убедитесь, что у Вас есть разрешение publish_stream

$attachment = array(
       'message' => 'Message', 
       'name' =>'your app name', 
       'caption' => "caption under the image", 
       'link' => 'your link', 
       'description' => 'description regarding the image', 
       'picture' => 'path of the picture(doesnt work for the local path, should be server path)', 
       'method'=>'stream.publish', 
       'actions' => array(
           array(
            'name' => 'App name', 
            'link' => 'your app link' 
           ) 
          ) 
       ); 

то после

$result = $facebook->api('/'.$uid.'/feed/','post',$attachment); 

здесь $ UID ваш идентификатор пользователя Facebook, который вы можете получить из файла конфигурации facebook

$facebook = new Facebook('configure your facebook config file here');  
$my_details = $facebook->api('/me'); 
$uid = $my_details['id']; // id of the user 
2

Вам не нужно копировать изображение в /tmp. вы можете напрямую загрузить изображение, указав собственный URL-адрес изображения в параметре. ниже код должен работать:

$picUrl = 'http//www.mysite.com/content/2013/03/image.jpg'; 
$photoId = $facebook->api("me/photos","POST",array('url'=>$picUrl,'message'=>"status message") 
Смежные вопросы