Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Vkontakte API - загрузка изображения на стену


Автор: meandnano 13.5.2011, 12:04
Добрый день!
Делаю удаленную часть mobile-приложения (php страничка) для авторизации ВК и добавления на стену сообщения с фотографией.

Делаю загрузку изображения на сервер ВК следующим образом:
Цитата

Загрузка фотографий на стену пользователя осуществляется в 3 этапа: 

1. С помощью метода photos.getWallUploadServer приложение узнает http-адрес для загрузки фотографии на стену текущего пользователя, другого пользователя или группы в зависимости от переданных параметров uid или gid. 

2. Приложение формирует POST-запрос на полученный адрес. 
Запрос должен включать поле photo, содержащее файл с изображением (JPG, PNG, BMP или GIF) 

Пример результата загрузки фотографии: 

{"server": "4753", "photo": "2041c53171:w", "hash": "76a17dce73ccb6edf9d7382c7787d53a"}

3. С помощью метода photos.saveWallPhoto приложение передает серверу полученные данные (server, photo, hash и опциональные uid и gid) и получает данные о загруженной фотографии.


Столкнулся со следующей проблемой:
после получения адреса сервера делаю POST-запрос на него таким образом:[spoiler="Этап 2"]
Код
$ch = curl_init($uri);
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "photo=$photo");  //$photo - прямая ссылка на изображение
 
    $result = curl_exec($ch);
 
    if (curl_errno($ch) != 0 && empty($result)) {
        $result = false;
    }
 
    curl_close($ch);
[/spoiler]
В возвращаемой json-строке получаю значения "server" и "hash", а [color=#FF0000]"photo" каждый раз возвращается пустым.[/color]
Соответственно, на следующем этапе я получаю ошибку - "не все требуемые параметры заполнены".

Есть идеи причины и решения? Может файл надо передавать не по URI, а как-то иначе?

Автор: gcc 13.5.2011, 15:12
посмотрите тут http://forum.vingrad.ru/forum/topic-329277.html

Автор: l3talka 18.4.2012, 19:37
Доброго времени суток, бьюсь сутки над проблемой, хочу загрузить фото в альбом vk.com через api. В документации написано что всё идёт в 3 этапа, первый это получить адресс сервера куда заливать фотографию, я получаю ссылку такого вида http://cs11174.vkontakte.ru/upload.php, второй этап это отправить POST запрос на этот адресс с данными вида file1 => 'photo', я отправляю но в ответ приходит сообщение Security Breach2. Отправляю через curl.

Вот сам код

Код


curl_setopt($ch, CURLOPT_URL, $server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true); 
$post= Array('file1' => '2.png');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$answer = curl_exec($ch);


Если кто сталкивался или есть готовый скрипт, пожалуйста помогите. Спс

Автор: Valinur 19.4.2012, 00:33
Может в печеньках дело? Ты их сохраняешь?

Автор: l3talka 19.4.2012, 18:12
да кукисы сохраняю в файл и использую из файла вот таким способом

Код

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 


в ответ получаю ту же ошибку 

Security Breach2

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)