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

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

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

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

Нет, в данном приложении использую только wrapper. Оговорился на счет APIConnection так как пытаюсь сейчас сделать без врапера и проверить будет ли работать в таком варианте. предположил что проблема с врапером...
По поводу ID приложения, возможно вопрос совсем тупой, но как передать api_ID при открытии приложения со стены если используется врапер?
Я видел что при использовании изменненной библиотеки он передается при активации, но в случае с врапером ничего по этой теме найти не могу.
Также нашел обсуждение сходного вопроса тут http://vkontakte.ru/topic-1_20012114 но непонятно причем тут параметр v=2.0, видимо версия... и как его передавать.

вариант

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

wrapper.external.api('wall.get', {api_id:2387024}, onGetById, onError);
как и предплогал не работает
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

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

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

Также проверил правильный ли api_id приходит в параметрах при врапера при перед вызовом метода 'wall.get'

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

wrapper=Object(parent.parent);if(wrapper.application.parameters.referrer=='wall_view_inline'||wrapper.application.parameters.referrer=='wall_view'){    message_text.text = String(wrapper.application.parameters.api_id); //api_id приходит верный.    wrapper.external.api('wall.get', {}, onGetById, onError);}
api_id приходит верный.
но в ответ на вызов 'wall.get' приходит ошибка "Invalid application API ID"
не понимаю :?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

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

А... Так ты из открышегося приложения пытаешься обратиться к api... Не сразу понял. Раньше это вроде бы было невозможно и была похожая проблема.
Видел приложения, в которых это было реализовано?
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

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

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

Извини я запутался. По поводу
А... Так ты из открышегося приложения пытаешься обратиться к api... Не сразу понял. Раньше это вроде бы было невозможно и была похожая проблема.
Делаю так:
1.При старте приложения как только Stage загружен получаю Врапер.
2.Проверяю откуда открылось приложение со стены или нет
3. если со стены то активирую метод 'wall.get'. и получаю в ответ "Invalid application API ID" хотя ради проверки смотрел какой api_Id получается из параметров врапера перед активацией метода 'wall.get' и он правильный.
4. если приложение открыто не со стены то проверяю установлено ли оно, проверяю флаги настройки и получаю к примеру список друзей или список фотографий в альбоме. и тут все работает просто идеально.

Может я логически делаю что-то неверно?
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

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

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

Вот в добавок к предыдущему посту. Сделал эксперемент, отправил одинаковые запросы 'wall.get' со стены и при обычном запуске приложения, просмотривая что отправляется и получает приложения из Контакта. Код абсолютно одинаковый но формируются соврешенно разные запросы. Например API_ID при открытии со стены вобще не передается в запросе...
Вобщем вот:

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

public function Main():void {    this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );} public function onAddedToStage(e: Event):void {    this.removeEventListener( Event.ADDED_TO_STAGE, onAddedToStage );    Security.allowDomain("*");    stage.dispatchEvent(new Event(Event.DEACTIVATE));    stage.dispatchEvent(new Event(Event.ACTIVATE)); //эта функция снимает все минусы с контейнера                  wrapper=Object(parent.parent);        viewer_id=wrapper.application.parameters.viewer_id;    api_id=wrapper.application.parameters.api_id;    api_secret=wrapper.application.parameters.secret;    auth_key=wrapper.application.parameters.auth_key;        if(wrapper.application.parameters.referrer=='wall_view_inline'||wrapper.application.parameters.referrer=='wall_view')    {//если приложение открыто со стены         //получаем данные по записти на стене по ее идентификатору        var poster_id = viewer_id; //для проверки так как и постил на стену и просматриваю только я                      var id_for_post:String = String(poster_id) + "_jhgj5g34hg1";        wrapper.external.api('wall.getById', {posts:id_for_post}, onGetById, onError);                //в этом случае уходит вот такой запрос:        //format=json&method=wall.getById&posts=138988368_jhgj5g34hg1&rnd=3737&sig=fe0f960004669eaf6eaf02710f239525&v=3.0                       //и получаю вот такой ответ:        //{"error":{"error_code":101,"error_msg":"Invalid application API ID","request_params":[{"key":"format","value":"json"},{"key":"method","value":"wall.getById"},{"key":"posts","value":"138988368_jhgj5g34hg1"},       {"key":"rnd","value":"3737"},{"key":"sig","value":"fe0f960004669eaf6eaf02710f239525"},{"key":"v","value":"3.0"}]}}     }else    {//если открыли из раздела приложений                //получаем данные по записти на стене по ее идентификатору        var poster_id = viewer_id; //для проверки так как и постил на стену и просматриваю только я                      var id_for_post:String = String(poster_id) + "_jhgj5g34hg1";        wrapper.external.api('wall.getById', {posts:id_for_post}, onGetById, onError);                //в этом случае уходит вот такой запрос:        //api_id=2387024&format=json&method=wall.getById&posts=138988368_jhgj5g34hg1&rnd=189&sid=df025ccb0c12e0bb50ea2884b01d28597cedce5389e3a193a35688873e1093&sig=5aa6cb3c15699624f8acfb6be0b1fe24&v=3.0        //и получаю вот такой ответ:        //{"response":{}}    }} private function onGetById(data: Object):void{    //если приложение открывается из папки приложений то я попадаю сюда но данных нет                msg_txt.text = data[0].id;}private function onError(data: Object):void{    //если открываю со стены то попадаю сюда                msg_txt.text = "Error!";}
Почему так происходит, а главное что сделать чтобы при открытии со стены отправлялся такойже запрос как и при обычном открытии приложения?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

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

Хочешь использовать методы api из окошка, которое открывается при открытии приложения со стены (не на странице vk.com/appXXX) ?
Я вот говорю, что раньше это было сделать невозможно. То ли из-за какой-то безопасности, то ли из-за недоработки api. Сам я этого не делал, но по комментам других людей было так. Похоже что сейчас ситуация с этим не изменилась.
Юрий
Сообщения: 10
Зарегистрирован: 24 июн 2011, 12:46

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

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

Александр. Спасибо за терпение и разьяснения. Теперь все стало понятно.
Буду искать иной подход.
Ответить