Как получить данные через ‘wall.getById’ ?

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

Как получить данные через ‘wall.getById’ ?

Сообщение Юрий »

Пытаюсь при открытии приложения со стены загрузить в него полноразмерную картинку и текст сообщения.
Исходя из документации http://vkontakte.ru/developers.php?o=-1&p=wall.getById
используя ‘wall.getById’ можно получить URL большого изображения картинки отправленой на стену и текст сообщения.
Делаю так:

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

wrapper=Object(parent.parent);if(wrapper.application.parameters.referrer=='wall_view_inline'||wrapper.application.parameters.referrer=='wall_view'){    var post_id = wrapper.application.parameters.post_id;//id сохраненной на стене записи переданное мной при отправке картинки на стену    var poster_id = wrapper.application.parameters.poster_id;// id пользователя, разместившего запись на стене        var id_for_post:String = String(poster_id) + "_" + String(post_id);    wrapper.external.api('wall.getById', {posts:id_for_post}, onGetById, onError);              } private function onGetById(data: Object):void{    var url:String = data[0].photo.src_big; //получаю URL фотки    message_text.text = data[0].text; //получаю сообщение сообщения     //загружаем фотографию    var photoRequest:URLRequest=new URLRequest(url);    var photo:Loader = new Loader();    photo.load(photoRequest);    photo.x=1;    photo.y=1;    addChild(photo); }
Но вместо сообщения получаю Undefined а URL картинки просто пустой.
Подскажите пожалуйста что я делаю неправильно.
Заранее благодарен.
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

Re: Как получить данные через ‘wall.getById’ ?

Сообщение Юрий »

Александр в приведенном вами посте обьясняется что такое post_id. Да, это переменная которую я отправляю при посте на стену и потом получаю ее же. Как один из методов получения URL картинки и сообщения можно расматривать сохранение их в базе данных на стороннем сервере, либо URL можно шифровать темже Hex кодом... Но вопрос состоит в другом. В API контакта существует судя по их описанию специальный метод ‘wall.getById’ и на сколько я понимаю он позволяет получить желаемые данные так как они хранятся в параметрах самого поста на сервере Контакта. Об этом написано тут: http://vkontakte.ru/developers.php?o=-1&p=wall.getById
Поправте меня если я ошибаюсь в выше изложенном.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как получить данные через ‘wall.getById’ ?

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

Юрий
Вероятно, в случае с wall.getById, имеется ввиду post_id созданный в результате отправки сообщения методом wall.post.

Если получить записи методом wall.get, то получаемый в ответ id совпадает с post_id?
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

Re: Как получить данные через ‘wall.getById’ ?

Сообщение Юрий »

С 'wall.get', перехода по события в ф-ю onGetById похоже что вобеще не происходит, так как строка message_text.text = "!!!!!!!"; не исполняется. Ниже привожу код. Пробовал и закоментированный варианты, с тем же результатом. Если с 'wall.getById’ хотябы происходило событие onGetById то сейчас вобще мертво. Хотя любые другие методы которые не относятся к открытию со стены работают без проблем.
Теряюсь в догадках и прошу помощи.

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

if(wrapper.application.parameters.referrer=='wall_view_inline'||wrapper.application.parameters.referrer=='wall_view'){    wrapper.external.api('wall.get', {}, onGetById, onError);    //  var poster_id = wrapper.application.parameters.poster_id;//  wrapper.external.api('wall.get', {owner_id:poster_id}, onGetById, onError);} private function onGetById(data: Object):void{    message_text.text = "!!!!!!!";//    message_text.text = data[0].id; }
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как получить данные через ‘wall.getById’ ?

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

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

message_text.text = '1'; if(wrapper.application.parameters.referrer=='wall_view_inline'||wrapper.application.parameters.referrer=='wall_view'){    message_text.text = '2';    wrapper.external.api('wall.get', {}, onGetById, onError);    message_text.text = '3';} private function onGetById(data: Object):void{    message_text.text = '4';}
Что в message_text ?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как получить данные через ‘wall.getById’ ?

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

wall.get вообще отправляется? Смотри в Charles.
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

Re: Как получить данные через ‘wall.getById’ ?

Сообщение Юрий »

Да запрос отправляется. Также в Charles получил ответ:
{"error":{"error_code":101,"error_msg":"Invalid application API ID","request_params":[{"key":"format","value":"json"},{"key":"method","value":"wall.get"},{"key":"owner_id","value":....и.т.д.
только я не понимаю что значит неверный API ID. библиотеку для связи с их API я использую взятую пару дней назад с контакта. и все остольные методы работают. Где и как он передается?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как получить данные через ‘wall.getById’ ?

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

Юрий
значит что id приложения, используемый в запросе - не верный.

Ты одновременно используешь контейнер и библиотеку APIConnection? Какой смысл?
wrapper.external.api не хватает?

Посмотри урок http://flapps.ru/forum/topic3180.html - там показано как использовать и wrapper.external.api, и wrapper.external.callMethod, и wrapper.addEventListener...

Если без контейнера, но с библиотекой, то http://flapps.ru/forum/topic1943.html
Ответить