Как можно загружать фотографии через график API, но когда фотографии это за пределами сервера? - PullRequest
2 голосов
/ 03 ноября 2011

Мне нужно загрузить несколько фотографий в Facebook через Graph API, но фотографии не на том же сервере, это возможно?

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Вы уверены, что клиент не думает, что вы опубликуете ссылку на фотографии, которые существуют на его сервере, в FB, чтобы каждый просмотр генерировал трафик на их сайте? Если изображения не имеют отношения к IP, то ядумая, что они обеспокоены тем, что другие внешние стороны будут следовать URL-адресу своего внутреннего сервера.

В качестве альтернативы попросите клиента отправить вам фотографии по электронной почте, затем опросить INBOX с помощью сценария cron, затем загрузить из почтового ящика изагрузить в FB при получении.Вам необходимо решить проблемы безопасности, например, кто-то находит адрес электронной почты и отправляет фотографии по электронной почте, которые не следует помещать в FB.

0 голосов
/ 03 ноября 2011

Это возможно, но требует промежуточного шага (как упоминает @jlb) сохранения локальной копии.Вам просто нужны URL-адреса для изображений, которые вы хотите получить, и соответствующие разрешения на Facebook.Попробуйте это:

function pushImageToFacebook( $url_of_image , $fb_user_id , $fb_access_token )
{
  // Creates a new image file in the local directory and gets
  // ...a file handle for it.  MAKE SURE that you are able to
  // ...write to and read from the local directory or this 
  // ...will fail due to permissions.
  $fh = fopen( $filename = 'image' . microtime() , 'w' );
  // Writes the image data to the local file
  fwrite( $fh , file_get_contents( $url_of_image ) );
  // Closes the file handle
  fclose( $fh );

  // Sets the message argument
  $args = array( 'message' => 'Photo Uploaded Using cURL' );
  // Sets the filename argument
  $args[basename($filename)] = '@' . realpath($filename);
  // Initializes a cURL session and gets a cURL handle
  $ch = curl_init();
  // This is your Facebook Graph API URL
  $url = "https://graph.facebook.com/{$fb_user_id}/photos?access_token={$fb_access_token}";
  // Set all of your cURL session options
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
  // Fire the cURL and grab the return data (Facebook image ID)
  $buffer = curl_exec($ch);

  // OPTIONAL : Display the Facebook image ID
  print_r( json_decode( $buffer , true ) );

  return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...