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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)

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

Сообщение Guard-x » 28 окт 2010, 12:44

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

  1. $.post(  upload_url, { photo: 'http://trvx.ru/jpg/notification.jpg' }, function(data)
  2. {
  3.       hash = data.hash;
  4.       alert( hash );
  5. });


по документации этот запрос должен нормально отрабатывать - в ответ ничего не приходит...
всё ж верно? мы посылаем пост запрос на полученный ранее upload_url( мне он приходит ), и послыаем на него пост запрос с параметром photo - по всей видимости ссыкой на файл, который нужно загрузить...

я в шоке просто - вчера целый вечер просидел безуспешно
Аватара пользователя
Guard-x

 
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение InsideZ » 28 окт 2010, 13:20

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

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

 
Автор темы
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.

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

Сообщение Guard-x » 28 окт 2010, 13:43

пробовал, посылал через либу CURL запрос: ответ тот же {"mid": "10125748", "gid": "0", "server": "11449", "photo": "", "hash": "8f44ed5e553d7379f174bad775a26c26"}
Аватара пользователя
Guard-x

 
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

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

Сообщение InsideZ » 28 окт 2010, 14:02

все правильно, делай через CURL только, кроме указанного файла надо еще имя поля указать
  1. $client->setFileUpload($cnf->path->images . 'yazdesbyl.png', 'photo');

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


Согласен, документация к апи не с первого раза понятна :mrgreen:

За это сообщение автора InsideZ поблагодарил:
Guard-x
Аватара пользователя
InsideZ

 
Автор темы
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.

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

Сообщение Guard-x » 28 окт 2010, 14:14

InsideZ писал(а):все правильно, делай через CURL только, кроме указанного файла надо еще имя поля указать
  1. $client->setFileUpload($cnf->path->images . 'yazdesbyl.png', 'photo');

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


Согласен, документация к апи не с первого раза понятна :mrgreen:



я вроде бы то и делаю(
  1.  
  2. <?php
  3.  
  4.     $upload_url = rawurldecode( $_POST[ 'upload_url' ] );
  5.    
  6.     //инициализируем сеанс
  7.     $curl = curl_init();
  8.      
  9.     //уcтанавливаем урл, к которому обратимся
  10.     curl_setopt($curl, CURLOPT_URL, $upload_url);
  11.      
  12.     //передаем данные по методу post
  13.     curl_setopt($curl, CURLOPT_POST, 1);
  14.      
  15.     //теперь curl вернет нам ответ, а не выведет
  16.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  17.      
  18.     //переменные, которые будут переданные по методу post
  19.     curl_setopt($curl, CURLOPT_POSTFIELDS, 'photo='.urlencode( 'http://trvx.ru/jpg/notification.jpg') );
  20.    
  21.     //я не скрипт, я браузер опера
  22.     curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 10.00');
  23.      
  24.     $res = curl_exec($curl);
  25.      
  26.     //проверяем, если ошибка, то получаем номер и сообщение
  27.     if(!$res)
  28.     {
  29.         $error = curl_error($curl).'('.curl_errno($curl).')';
  30.         echo $error;
  31.     }
  32.     //если не ошибка, то выводим результат
  33.     else{
  34.         echo $res;
  35.     }
  36.      
  37.     curl_close($curl);
  38.  
  39.    
  40. ?>
  41.  

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"}
Аватара пользователя
Guard-x

 
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

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

Сообщение InsideZ » 28 окт 2010, 15:10

  1. curl_setopt($curl, CURLOPT_POSTFIELDS, 'photo='.urlencode( 'http://trvx.ru/jpg/notification.jpg') );

c CURL никогда не работал, но точно знаю что в этой строке что-то не так. Советую не через CURL делать, тем более, что ты его как браузер показываешь. В личку ссылку кидаю на пример.
Аватара пользователя
InsideZ

 
Автор темы
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.

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

Сообщение altermann » 28 окт 2010, 22:59

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

  1. <?php
  2.  
  3. if (isset($_POST["upload_url"])) {
  4.     $upload_url = $_POST["upload_url"];
  5.    
  6.     $post_params['photo'] = '@'.'wallimage.jpg';
  7.  
  8.     $ch = curl_init();
  9.     curl_setopt($ch, CURLOPT_URL, $upload_url);
  10.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  11.     curl_setopt($ch, CURLOPT_POST, true);
  12.     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
  13.     $result = curl_exec($ch);
  14.     curl_close($ch);
  15.    
  16.     //var_dump($result);
  17.     $result = json_decode($result);
  18.    
  19.     $mess = array (server => $result->server, photo=> $result->photo, hash => $result->hash);
  20.    
  21.     echo json_encode($mess);
  22.    
  23. }


это именно тот скрипт, к которому обращается InsideZ в самом первом посте - index/uploadimage
Для тех, кто не шарит как юзать, поясню: обзываете файл скрипт как-нить, типа uploadimage.php, кидаете его в одну папку со скриптом апи, в ту же папку файл картинки wallimage.jpg. Собственно усе. А, еще немного, в строке запроса к апи (первый пост):
  1. $.post(
  2.                 // отправляю со своего сервера изображение на upload_url
  3.                 'index/uploadimage',
  4.                 {upload_url:data.response.upload_url},


меняем index/uploadimage на имя нашего скрипта - uploadimage.php

Скрипт простейший и для многих это чушь, но много таких, кто не шарит как это сделать )

За это сообщение автора altermann поблагодарил:
Ronaldo
altermann

 
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

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

Сообщение altermann » 28 окт 2010, 23:01

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

тем не менее, мой код сто пудов рабочий =)
altermann

 
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

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

Сообщение oleamm » 01 ноя 2010, 10:52

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

Присоединяюсь к вопросу. Что, просто отправить сообщение без картинки нельзя?

Ладно, сделал пока с картинкой. При клике на нее открывается мое приложение по ссылке вида http://vkontakte.ru/app1234_007?from_id=007
Но со стены приложение так и не запускается, белое поле и все. Если перейти по ссылке под этим белым полем "Перейти к приложению" то на новой странице приложение нормально запустится.
oleamm

 
Сообщения: 4
Зарегистрирован: 01 ноя 2010, 10:47
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Александр » 01 ноя 2010, 22:20

oleamm писал(а):Что, просто отправить сообщение без картинки нельзя?

Методом wall.savePost нельзя.
Можно методом wall.post. Но он доступен только Desktop-приложениям.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Пред.След.

Вернуться в Создание IFrame-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron