Как я могу загрузить фотографии в альбом, используя Facebook Graph API - PullRequest
3 голосов
/ 03 июня 2010

Вот код:

$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: не удалось создать промежуточные данные

Что делать?

Ответы [ 3 ]

12 голосов
/ 09 июня 2010

Вот несколько различных способов загрузки фотографий с помощью 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);
3 голосов
/ 04 июня 2010

ваш массив $ data должен иметь «message» вместо «caption», также удалите «aid», «method» и «access_token»
ваши $ data должны иметь данные файла и «message», вот и все.

$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 Graph Facebook

2 голосов
/ 05 сентября 2010

Последняя версия Facebook 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, '&');
...

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

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

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