Страница 1 из 1

photos.getWallUploadServer

Добавлено: 13 апр 2011, 13:59
Ali
Пытаюсь загрузить фото на стену, используя эту инструкцию:
Загрузка фотографий на стену пользователя осуществляется в 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) и получает данные о загруженной фотографии.

После успешной загрузки фотографии Вы можете разместить её на стене, используя метод wall.post и указав идентификатор
фотографии в параметре attachment. Обратите внимание, что при размещении фотографии на стене другого пользователя или
группы необходимо указывать параметры uid и gid, соответствующие используемым в п.1.


Но первый же запрос (photos.getWallUploadServer) выдает ответ: Permission to perform this action is denied by user

У пользователя все разрешено, в приложении стоит галочка "запрашивать доступ к стене".
Что необходимо предпринять, что бы этот запрос отработал нормально?

Re: photos.getWallUploadServer

Добавлено: 13 апр 2011, 14:32
bodnar
хм, а доступ к друзьям?

Re: photos.getWallUploadServer

Добавлено: 13 апр 2011, 14:38
Ali
тоже есть

Re: photos.getWallUploadServer

Добавлено: 13 апр 2011, 20:14
Александр
Доступ к фотографиям?
Запрос выполняется с клиентской части или с серверной?

Re: photos.getWallUploadServer

Добавлено: 19 апр 2011, 13:37
Ali
Да, спасибо, проблема была в доступе к фотографиям. Хотя, не понимаю, зачем он мне? Я ведь не обращаюсь к альбомам пользователя. Но с этим доступом и на стену фото отправилось благополучно.

Re: photos.getWallUploadServer

Добавлено: 19 апр 2011, 14:01
bodnar
как это не обращаешься? А фотки по твоему куда грузятся? В специальный альбом который называется "Фотографии на моей странице" не?

Re: photos.getWallUploadServer

Добавлено: 31 май 2011, 21:37
xenreal
Делал загрузку изображения из флэша во вконтакт, для борьбы с политиками безопасности использовал php скрипт(флэшка находится на своем домене, поэтому пост запрос вконтакт выполнить не может). Столкнулся с проблемой, что если сразу загрузить полученную фотографию вконтакт, в ответе он выдает пустой список фоторафий, а фотография естественно не загружается.

Вот этот код непонятно, почему не рабтает:

Код: Выделить всё

<?php  $postURL = $_POST['photoURL'];  $photoData = $_POST['photoData'];   $decodedPhotoData = base64_decode($photoData);  $postData['photo'] = $decodedPhotoData;   $ch = curl_init();  curl_setopt($ch, CURLOPT_URL, $postURL);  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  curl_setopt($ch, CURLOPT_POST, 1);  curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);  $output = curl_exec($ch);  curl_close($ch);  echo $output;?>
Если же сначала сохранять фотографию, а потом передавать в пост запрос загруженное изображение, вконтакт успешно сохраняет фотографию.

Код: Выделить всё

<?php  $viewerID = $_POST['viewerID'];  $postURL = $_POST['photoURL'];  $photoData = $_POST['photoData'];  $fileExtension = '.jpg';   $fileName = 'screenshots/' . (int)$viewerID . $fileExtension;  $decodedPhotoData = base64_decode($photoData);    if (viewerId) {    $file=fopen($fileName,'w');     fwrite($file,$decodedPhotoData);     fclose($file);   }   //$postData['photo'] = $decodedPhotoData;  $postData['photo'] = '@' . $fileName;   $ch = curl_init();  curl_setopt($ch, CURLOPT_URL, $postURL);  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  curl_setopt($ch, CURLOPT_POST, 1);  curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);  $output = curl_exec($ch);  curl_close($ch);  echo $output;?>
Хотелось бы узнать, что может добавиться в файл, после сохранения его в .jpg на сервере, что позволяет вконтакту прочитать его.