Intereting Posts
Как исправить фиксацию сеанса в PHP $ _SERVER не работает в скрипте php, проходящем через cron PHP не работает, когда функция не определена? Swiftmailer: невозможно установить соединение с узлом smtp.gmail.com Автоматический активный класс для Twitter-загрузки Bootstrap Navigation в Laravel Как проверить, какой купон применяется к тому или иному продукту в WooCommerce? Матрица WordPress, чтобы показать сообщение из определенной категории и показать выдержку и описание Массив блока Codeigniter Получить из базы данных, но только последние 30 дней Переменная «ошибка» не существует в FOSUserBundle :: layout.html.twig в строке 5 Установка даты истечения срока действия или максимального возраста в заголовках HTTP Как автоматизировать форматирование PHP-источника? Как сравнить два массива и удалить соответствующие элементы из одного для следующего цикла? конвертировать url в ссылки из строки, за исключением случаев, когда они находятся в атрибуте тега html CakeResque – Resque не найден в … app / Plugin / CakeResque / Lib / CakeResque.php в строке 82

Как загрузить фотографии в альбом с помощью API-интерфейса Facebook Graph

Вот код:

$file= 'bbbb.jpg'; $data = array( basename($file) => "@".realpath($file), "caption" => "Uploaded using graph api", "aid" => '13595', "access_token" => $accessToken, 'method' => 'photos.upload' ); $sds =$facebook->api($data); 

Это ошибка

Uncaught CurlException: 26: не удалось создать данные formpost

Что делать?

Solutions Collecting From Web of "Как загрузить фотографии в альбом с помощью API-интерфейса Facebook Graph"

Вот несколько способов загрузки фотографий с помощью Graph API. В примерах предполагается, что вы создали экземпляр объекта $ facebook и имеете действующий сеанс для текущего пользователя.

1 – Альбом приложения по умолчанию для текущего пользователя

В этом примере вы загрузите фотографию в свой альбом приложений по умолчанию текущего пользователя. Если альбом еще не существует, он будет создан.

 $args = array('message' => 'Photo Caption'); $args['image'] = '@' . realpath($FILE_PATH); $data = $facebook->api('/me/photos', 'post', $args); print_r($data); 

2 – Целевой альбом

Этот пример загрузит фотографию в конкретный альбом.

 $args = array('message' => 'Photo Caption'); $args['image'] = '@' . realpath($FILE_PATH); $data = $facebook->api('/'. $ALBUM_ID . '/photos', 'post', $args); print_r($data); 

3 – Целевой альбом с маркером доступа

В этом примере вы загружаете фотографию в конкретный альбом, для которого требуется токен доступа.

  $args = array('message' => 'Photo Caption'); $args['image'] = '@' . realpath($FILE_PATH); $data = $facebook->api('/'. $ALBUM_ID . '/photos?access_token='. $ACCESS_TOKEN, 'post', $args); print_r($data); 

ваш массив данных должен иметь «сообщение» вместо «подпись», а также удалить «помощь», «метод» и «access_token»,
ваши $ data должны иметь данные файла и «сообщение», то есть.

 $sds =$facebook->api('/me/13595/photos', 'POST', $data); 

где вместо 13595 просто используйте переменную с помощью альбома

также, если необходимо, access_token лучше всего присоединяется к api uri следующим образом:

 $sds =$facebook->api('/me/13595/photos?access_token='.$access_token, 'POST', $data); 

Кроме того, если php sdk не работает для вас, я успешно использовал cURL, если ваша установка php поддерживает его. в этом случае см. пример cURL при загрузке фотографий в альбом с помощью API-интерфейсов Facebook

Последняя версия PHP PHP SDK не будет работать с приведенными выше примерами без следующего обновления кода.

 class Facebook { ... *Line #539* protected function makeRequest($url, $params, $ch=null) { if (!$ch) { $ch = curl_init(); } if( isset($params['doMultiPart']) ) { $doMultiPart= true; unset($params['doMultiPart']); } else { $doMultiPart= false; } $opts = self::$CURL_OPTS; $opts[CURLOPT_POSTFIELDS] = $doMultiPart ? $params : http_build_query($params, null, '&'); ... не class Facebook { ... *Line #539* protected function makeRequest($url, $params, $ch=null) { if (!$ch) { $ch = curl_init(); } if( isset($params['doMultiPart']) ) { $doMultiPart= true; unset($params['doMultiPart']); } else { $doMultiPart= false; } $opts = self::$CURL_OPTS; $opts[CURLOPT_POSTFIELDS] = $doMultiPart ? $params : http_build_query($params, null, '&'); ... 

В основном проблема заключается в том, что PHP SDK использует «curl_setopt_array», который, если вы передадите ему строку с кодировкой url в качестве значения параметра, она передаст данные как application / x-www-form-urlencoded, когда то, что вы действительно хотите, это multipart / form- данные ; для этого мы просто переключаемся на передачу в массиве параметров, если у нас есть параметр doMultiPart в массиве params.

Это был быстрый хак, который я собрал для того, чтобы что-то работать, возможно, нужно пересмотреть код, чтобы убедиться, что он не сломает ничего, что вы делаете. В противном случае наслаждайтесь.