Страница 2 из 2
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 24 июн 2011, 23:47
Юрий
Нет, в данном приложении использую только wrapper. Оговорился на счет APIConnection так как пытаюсь сейчас сделать без врапера и проверить будет ли работать в таком варианте. предположил что проблема с врапером...
По поводу ID приложения, возможно вопрос совсем тупой, но как передать api_ID при открытии приложения со стены если используется врапер?
Я видел что при использовании изменненной библиотеки он передается при активации, но в случае с врапером ничего по этой теме найти не могу.
Также нашел обсуждение сходного вопроса тут
http://vkontakte.ru/topic-1_20012114 но непонятно причем тут параметр v=2.0, видимо версия... и как его передавать.
вариант
Код: Выделить всё
wrapper.external.api('wall.get', {api_id:2387024}, onGetById, onError);
как и предплогал не работает
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 25 июн 2011, 00:37
Юрий
Также проверил правильный ли 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"
не понимаю
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 26 июн 2011, 21:18
Александр
А... Так ты из открышегося приложения пытаешься обратиться к api... Не сразу понял. Раньше это вроде бы было невозможно и была похожая проблема.
Видел приложения, в которых это было реализовано?
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 27 июн 2011, 13:33
Юрий
Извини я запутался. По поводу
А... Так ты из открышегося приложения пытаешься обратиться к api... Не сразу понял. Раньше это вроде бы было невозможно и была похожая проблема.
Делаю так:
1.При старте приложения как только Stage загружен получаю Врапер.
2.Проверяю откуда открылось приложение со стены или нет
3. если со стены то активирую метод 'wall.get'. и получаю в ответ "Invalid application API ID" хотя ради проверки смотрел какой api_Id получается из параметров врапера перед активацией метода 'wall.get' и он правильный.
4. если приложение открыто не со стены то проверяю установлено ли оно, проверяю флаги настройки и получаю к примеру список друзей или список фотографий в альбоме. и тут все работает просто идеально.
Может я логически делаю что-то неверно?
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 27 июн 2011, 20:27
Юрий
Вот в добавок к предыдущему посту. Сделал эксперемент, отправил одинаковые запросы '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!";}
Почему так происходит, а главное что сделать чтобы при открытии со стены отправлялся такойже запрос как и при обычном открытии приложения?
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 27 июн 2011, 21:34
Александр
Хочешь использовать методы api из окошка, которое открывается при открытии приложения со стены (не на странице vk.com/appXXX) ?
Я вот говорю, что раньше это было сделать невозможно. То ли из-за какой-то безопасности, то ли из-за недоработки api. Сам я этого не делал, но по комментам других людей было так. Похоже что сейчас ситуация с этим не изменилась.
Re: Как получить данные через ‘wall.getById’ ?
Добавлено: 27 июн 2011, 22:09
Юрий
Александр. Спасибо за терпение и разьяснения. Теперь все стало понятно.
Буду искать иной подход.