Метод постинга на стену

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Аватара пользователя
Guard-x
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55

Re: Метод постинга на стену

Сообщение Guard-x »

тот post запрос не работает( можешь мне кинуть руальную копию своего пост запроса?

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

 $.post(  upload_url, { photo: 'http://trvx.ru/jpg/notification.jpg' }, function(data){      hash = data.hash;      alert( hash ); });
по документации этот запрос должен нормально отрабатывать - в ответ ничего не приходит...
всё ж верно? мы посылаем пост запрос на полученный ранее upload_url( мне он приходит ), и послыаем на него пост запрос с параметром photo - по всей видимости ссыкой на файл, который нужно загрузить...

я в шоке просто - вчера целый вечер просидел безуспешно
Аватара пользователя
InsideZ
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52

Re: Метод постинга на стену

Сообщение InsideZ »

Я ошибся, ajax не может выполнять кросс-доменные запросы. Просто формируй post запрос на стороне своего сервера на php.

Еще, я так понимаю, что нескольким пользователям одновременно постить нельзя? Типа, чтоб не спамили.
Последний раз редактировалось InsideZ 28 окт 2010, 13:43, всего редактировалось 1 раз.
Аватара пользователя
Guard-x
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55

Re: Метод постинга на стену

Сообщение Guard-x »

пробовал, посылал через либу CURL запрос: ответ тот же {"mid": "10125748", "gid": "0", "server": "11449", "photo": "", "hash": "8f44ed5e553d7379f174bad775a26c26"}
Аватара пользователя
InsideZ
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52

Re: Метод постинга на стену

Сообщение InsideZ »

все правильно, делай через CURL только, кроме указанного файла надо еще имя поля указать

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

$client->setFileUpload($cnf->path->images . 'yazdesbyl.png', 'photo');
где $cnf->path->images . 'yazdesbyl.png' - загружаемое изображение, а 'photo' - имя поля для изображения на стену.
2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен содержать поле photo, которое содержит файл с изображением (JPG, PNG, BMP или GIF).
Согласен, документация к апи не с первого раза понятна :mrgreen:
Аватара пользователя
Guard-x
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55

Re: Метод постинга на стену

Сообщение Guard-x »

InsideZ писал(а):все правильно, делай через CURL только, кроме указанного файла надо еще имя поля указать

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

$client->setFileUpload($cnf->path->images . 'yazdesbyl.png', 'photo');
где $cnf->path->images . 'yazdesbyl.png' - загружаемое изображение, а 'photo' - имя поля для изображения на стену.
2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен содержать поле photo, которое содержит файл с изображением (JPG, PNG, BMP или GIF).
Согласен, документация к апи не с первого раза понятна :mrgreen:

я вроде бы то и делаю(

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

 <?php     $upload_url = rawurldecode( $_POST[ 'upload_url' ] );        //инициализируем сеанс    $curl = curl_init();         //уcтанавливаем урл, к которому обратимся    curl_setopt($curl, CURLOPT_URL, $upload_url);         //передаем данные по методу post    curl_setopt($curl, CURLOPT_POST, 1);         //теперь curl вернет нам ответ, а не выведет    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);         //переменные, которые будут переданные по методу post    curl_setopt($curl, CURLOPT_POSTFIELDS, 'photo='.urlencode( 'http://trvx.ru/jpg/notification.jpg') );        //я не скрипт, я браузер опера    curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 10.00');         $res = curl_exec($curl);         //проверяем, если ошибка, то получаем номер и сообщение    if(!$res)    {        $error = curl_error($curl).'('.curl_errno($curl).')';        echo $error;    }    //если не ошибка, то выводим результат    else{        echo $res;    }         curl_close($curl);     ?> 
curl_setopt($curl, CURLOPT_POSTFIELDS, 'photo='.urlencode(file_get_contents( 'http://trvx.ru/jpg/notification.jpg' ) ) ); // так тоже пробовал - то же самое в ответ - {"mid": "10125748", "gid": "0", "server": "11449", "photo": "", "hash": "8f44ed5e553d7379f174bad775a26c26"}
Аватара пользователя
InsideZ
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52

Re: Метод постинга на стену

Сообщение InsideZ »

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

curl_setopt($curl, CURLOPT_POSTFIELDS, 'photo='.urlencode( 'http://trvx.ru/jpg/notification.jpg') );
c CURL никогда не работал, но точно знаю что в этой строке что-то не так. Советую не через CURL делать, тем более, что ты его как браузер показываешь. В личку ссылку кидаю на пример.
altermann
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45

Re: Метод постинга на стену

Сообщение altermann »

Товарищ InsideZ привел скрипт, который заливает имагу на сервак контакта, ориентированный на Zend. Если кому нужно, то вот скрипт на пыхе с использованием всеми любимого курла:

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

<?php if (isset($_POST["upload_url"])) {    $upload_url = $_POST["upload_url"];        $post_params['photo'] = '@'.'wallimage.jpg';     $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $upload_url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);    $result = curl_exec($ch);    curl_close($ch);        //var_dump($result);    $result = json_decode($result);        $mess = array (server => $result->server, photo=> $result->photo, hash => $result->hash);        echo json_encode($mess);    }
это именно тот скрипт, к которому обращается InsideZ в самом первом посте - index/uploadimage
Для тех, кто не шарит как юзать, поясню: обзываете файл скрипт как-нить, типа uploadimage.php, кидаете его в одну папку со скриптом апи, в ту же папку файл картинки wallimage.jpg. Собственно усе. А, еще немного, в строке запроса к апи (первый пост):

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

$.post(                // отправляю со своего сервера изображение на upload_url                'index/uploadimage',                {upload_url:data.response.upload_url},
меняем index/uploadimage на имя нашего скрипта - uploadimage.php

Скрипт простейший и для многих это чушь, но много таких, кто не шарит как это сделать )
altermann
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45

Re: Метод постинга на стену

Сообщение altermann »

оу, что-то я не заметил вторую страницу с похожим скриптом =)

тем не менее, мой код сто пудов рабочий =)
oleamm
Сообщения: 4
Зарегистрирован: 01 ноя 2010, 10:47

Re: Метод постинга на стену

Сообщение oleamm »

InsideZ писал(а):Guard-x
Кстати, а без загрузки фото у кого-нибудь получалось отправить сообщение на стену?
Присоединяюсь к вопросу. Что, просто отправить сообщение без картинки нельзя?

Ладно, сделал пока с картинкой. При клике на нее открывается мое приложение по ссылке вида http://vkontakte.ru/app1234_007?from_id=007
Но со стены приложение так и не запускается, белое поле и все. Если перейти по ссылке под этим белым полем "Перейти к приложению" то на новой странице приложение нормально запустится.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Метод постинга на стену

Сообщение Александр »

oleamm писал(а):Что, просто отправить сообщение без картинки нельзя?
Методом wall.savePost нельзя.
Можно методом wall.post. Но он доступен только Desktop-приложениям.
Ответить