Я хотел бы загрузить фотографию в Facebook для пользователя в альбоме по умолчанию для приложения.Это описано при публикации здесь: http://developers.facebook.com/docs/reference/api/photo
Метод получил ответ здесь: Как загрузить фотографии в альбом, используя Facebook Graph API .Я использую следующее:
$args = array(
'message' => 'Photo Caption',
'image' => '@'.realpath("image.png")
);
$data = $facebook->api('/me/photos', 'post', $args);
Однако я получаю исключение "(# 324) Требуется загрузить файл", когда я пытаюсь это сделать.У меня есть действующий сеанс, и у меня есть разрешения publish_stream и user_photos.Я могу получить данные с помощью API.Файл изображения определенно действителен, потому что он может быть загружен с file_get_contents(realpath("image.png"))
.
Я пробовал это решение, используя curl, который отлично работает: Загрузить фото в альбом с Facebook API Graph
$args = array(
'message' => 'Photo from application',
'pic.png' => '@'.realpath('pic.png')
);
$tok = $session['access_token']
$url = 'http://graph.facebook.com/'.$album_id.'/photos?access_token='.$tok;
$ch = curl_init();
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);
$data = curl_exec($ch);
По сравнению с PHP curl PHP SDK, который выглядит следующим образом (с использованием тех же $ args и $ url):
$ch = curl_init();
$opts = self::$CURL_OPTS;
$opts[CURLOPT_POSTFIELDS] = http_build_query($args, null, '&');
$opts[CURLOPT_URL] = $url;
curl_setopt_array($ch, $opts);
$data= curl_exec($ch);
Почему не работает версия PHP?Похоже, функция http_build_query () мешает загрузке изображения.Я не знаю достаточно о керле, чтобы понять, что здесь происходит.