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

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

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

Сообщение InsideZ » 26 окт 2010, 11:27

Знатоки, подскажите. Приложение iframe. Написал метод постинга на стену. По всем запросам нормальные ответы, ошибок не возвращает, но на стену ничего не постит. Не могу понять, нужно ли для iframe приложения делать флэш-контейнер. Пробовал делать в настройках приложения "Вывод приложения с отступами и т.д." и без них, результат не менялся. Вот код, и что он возвращает:
  1.  
  2. // отправить сообщение друзьям пользователя на стену
  3. CApiVkTravel.prototype.UserFriendsSendToWall = function (uid, message) {
  4.     // возвращает upload_url, куда буду загружать картинку
  5.     VK.api('wall.getPhotoUploadServer', {}, function (data) {
  6.         if (data.response) {
  7.             $.post(
  8.                 // отправляю со своего сервера изображение на upload_url
  9.                 'index/uploadimage',
  10.                 {upload_url:data.response.upload_url},
  11.                 function (json) {
  12.                     // все нормально, ответ примерно такой:
  13.                     // {"mid": "1111111", "gid": "0", "server": "11111", "photo": "837556e9f8x", "hash": "e72597b6a5c86589e02c933458dc8e4c"}
  14.                     // дальше пытаюсь запостить на стену
  15.                     VK.api('wall.savePost',
  16.                             {wall_id: uid, message: message, server: json.server, photo: json.photo, hash:json.hash, post_id:123},
  17.                             function(data) {
  18.                                 if (data.response) {
  19.                                     // в итоге получаю вполне нормальный ответ:
  20.                                     // {"response":{"post_hash":"e5627416cab8f8391c",
  21.                                     // "photo_src":"http:\/\/cs11111.vk.com\/u1111111\/m_7b7f9489.jpg"}}
  22.                                     // а поста на стене нет
  23.                                     console.log(data);
  24.                                 }
  25.                             }
  26.                         );
  27.                 }, 'json');
  28.         }
  29.     })
  30. }
  31.  

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

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

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

Google
 



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

Сообщение altermann » 27 окт 2010, 17:22

так а где вызов метода saveWallPost ? Оно как раз и открывает окошко сохранения поста на стену:

"4. С помощью вызова функции saveWallPost Flash-контейнера с параметром post_hash, полученном в п.3, приложение может сохранить изображение с дополнительным текстом на стене пользователя. "

Загрузка изображения на стену пользователя
altermann

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

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

Сообщение altermann » 27 окт 2010, 18:55

Слушай, я как раз занимаюсь этим вопросом, не мог бы ты показать скрипт, который загружает имагу на сервак контакта?
сенкс.
altermann

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

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

Сообщение altermann » 27 окт 2010, 19:56

хотя не надо, уже написал =)

прекрасно работает, кстати, этот код, просто добавь метод, который сохраняет запись.
altermann

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

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

Сообщение Doker » 27 окт 2010, 20:58

Сделай урок. Получиш много благодарностей )
my icq numbers: 403305362 и 484613
Аватара пользователя
Doker
Модератор
Модератор
 
Сообщения: 1026
Зарегистрирован: 07 май 2010, 18:53
Благодарил (а): 35 раз.
Поблагодарили: 52 раз.

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

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

'index/uploadimage' - что делает этот скрипт? - мне кажется что этот пост-запрос адресован на Ваш скрипт на сервере. а должно быть наоборот чтоли - вы должны слать на скрипт, который пришел по JSON. помогите разобраться...
Аватара пользователя
Guard-x

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

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

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

Здравствуйте, Вы писали пост запрос на 'index/uploadimage', но в комментарии пишете о том, что шлёте запрос на upload_url. Растолкуйте пожайлуйста мне - это опечатка или это должно быть так.
Я столкнулся с проблемой в этом пост запросе - шлю данные на полученный upload_url но в ответ не получаю JSON.

  1. VK.api('wall.getPhotoUploadServer', { wall_id: 10125748 }, function(data)
  2.         {
  3.             if (data.response)
  4.             {
  5.                 upload_url = data.response.upload_url;
  6.                
  7.                 alert( upload_url );
  8.                                              
  9.                 $.post( upload_url, { photo: 'http://trvx.ru/jpg/notification.jpg' }, function(data)
  10.                 {  
  11.  //здесь ответ таков(если перейти по запросу в firebug - иначе не получаем ответа) /*{"mid": "10125748", "gid": "0", "server": "11449", "photo": "", "hash": "8f44ed5e553d7379f174bad775a26c26"    */
  12.                     hash = data.hash;
  13.                     alert( hash );
  14.                 });
  15.              }
  16.       });


Надеюсь Вы мне поможете разобраться...
Аватара пользователя
Guard-x

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

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

Сообщение InsideZ » 28 окт 2010, 11:56

я пользуюсь Zend Framework, если кому понадобится, вот экшн, который загружает картинку на сервер вонтакте:
  1.  
  2. public function uploadimageAction()
  3. {
  4.     // здесь получаем сервер вконтакте, куда загружать изображение ('upload_url')
  5.     $upload_url = $this->_request->getParam();
  6.     if (!empty($upload_url)) {
  7.         // создаем объект клиента
  8.         $client = new Zend_Http_Client();
  9.         // указываем url, куда обращаться, куда загружаем изображение
  10.         $client->setUri($upload_url);
  11.         // определяем метод запроса
  12.         $client->setMethod(Zend_Http_Client::POST);
  13.         // указываем файл изображения
  14.         $cnf = Zend_Registry::get('cnf');
  15.         $client->setFileUpload($cnf->path->images . 'yazdesbyl.png', 'photo');
  16.         // выполняем запрос
  17.         $result = $client->request();
  18.         // смотрим результаты (сразу приходят в json)
  19.         if ($result->isError()) {
  20.             echo $result->getStatus();
  21.         } else {
  22.             echo $result->getBody();
  23.             // таким образом мы получили строку вида
  24.             // {"mid": "1111111", "gid": "0", "server": "11111",
  25.             // "photo": "837556e9f8x", "hash": "e72597b6a5c86589e02c933458dc8e4c"}
  26.         }
  27.         exit();
  28.     }
  29. }
  30.  

Guard-x, пост запрос на 'index/uploadimage' в моем коде отправляет моему серверу только upload_url, куда загружать изображение, далее уже выполняется php кросс-доменный запрос загрузки изображения с моего сервера на сервер вконтакте. Ваш firebug показал ответ пост-запроса загруженной фотки ({"mid": "10125748", "gid": "0", "server": "11449", "photo": "" ....). Только photo пустое вернул. Попробуйте определить тип данных, с которыми работаете (json), и надо заметить, что метод wall.getPhotoUploadServer не имеет параметров. Хотя, это влиять на что-либо не должно. Ваш код будет выглядеть примерно так:
  1.  
  2. VK.api('wall.getPhotoUploadServer', {}, function(data) {
  3.     if (data.response) {
  4.         upload_url = data.response.upload_url;
  5.         alert( upload_url );
  6.         $.post(
  7.             upload_url,
  8.             {photo: 'http://trvx.ru/jpg/notification.jpg' },
  9.             function(json) {
  10.                 hash = json.hash;
  11.                 alert( hash );
  12.             },
  13.             'json'
  14.         );
  15.     }
  16. });
  17.  


altermann, по поводу контейнера. Я во флэш вообще не секу. Читаю документацию и не пойму, каким образом взаимодействует контейнер с моим iframe-приложением.
Сейчас у меня в настройках приложения стоит "Тип приложения - IFrame". Значит, чтоб включить flash-контейнер, надо переключить на "Flash" "с использованием контейнера"?
Откуда вызывать метод saveWallPost?
Аватара пользователя
InsideZ

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

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

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

не нужно ничего переключать на Флеш, попробуйте такой пример:
  1. VK.api("wall.savePost", { wall_id: "<Ваш id>", post_id:"123", photo_id:"<id уже загруженной фото, например 10125748_186752479 >", message: '<Ваше сообщение>' }, function(data)
  2. {
  3.       VK.callMethod("saveWallPost", data.response.post_hash);  
  4. });
Последний раз редактировалось 112 28 окт 2010, 12:19, всего редактировалось 2 раз(а).
Причина: Используйте [code=javascript] [/code] для оформления кода.

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

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

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

Сообщение InsideZ » 28 окт 2010, 12:37

Guard-x
Спасибо, уже сам до этого дошел. Мне не хватало именно слов "после метода wall.savePost необходимо вызвать внешний метод saveWallPost. Я, видимо, очень невнимательно читал документацию :oops:
Кстати, а без загрузки фото у кого-нибудь получалось отправить сообщение на стену?
Аватара пользователя
InsideZ

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

След.

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



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

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

cron