Подскажите, что неправильно (getUserBalance)

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Alf162
Сообщения: 7
Зарегистрирован: 08 авг 2010, 13:10

Подскажите, что неправильно (getUserBalance)

Сообщение Alf162 »

Я только начинаю изучать эти вещи, вроде все делаю правильно, а баланс не показывает :?:

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

package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;    import vk.VkApiNode;     public class Main extends Sprite {        private var api_id:Number=1918008;// id вашего приложения        private var api_secret:String="q2U86USN75";// секретный ключ        private var api:VkApiNode;        private var viewer_id;        private var server_url;        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var query:String;         public function Main():void {            viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;            // определяем адрес сервиса API (vkontakte.ru или vk.com)            server_url = LoaderInfo(root.loaderInfo).parameters.api_url + '?';//            server_url = "vkontakte.ru?";            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            query=api.getUserBalance();            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,friendsLoaded);            url_loader.load(url_request);        }         public function friendsLoaded(event:Event):void {            // обрабатываем полученный ответ            var responseFriends:XML=new XML(url_loader.data);                       for each (var user:XML in responseFriends.*) {                               friends_tf.text='Ваш баланс=' + user.balance;            }        }           }}
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Подскажите, что неправильно (getUserBalance)

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

Меняй вот такие вот названия "responseFriends" на соответствующие. Потом же сам запутаешься.

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

        public function friendsLoaded(event:Event):void {            // обрабатываем полученный ответ            var responseFriends:XML=new XML(url_loader.data);            friends_tf.text='Ваш баланс=' + responseFriends.balance;        }
Почитай в интернете про работу с XML в AS3.
Alf162
Сообщения: 7
Зарегистрирован: 08 авг 2010, 13:10

Re: Подскажите, что неправильно (getUserBalance)

Сообщение Alf162 »

Это я взял с другого исходника.
То есть здесь проблема только с выводом полученной информации?
И еще вопрос: как создается подпись запроса? Написано:
Параметр sig равен md5 от контактенации следующих строк:

viewer_id – id текущего пользователя, переданный приложению посредством flashVars/GET запроса.

пар "parameter_name=parameter_value", расположенных в порядке возрастания имени параметра (по алфавиту).

секрета secret полученного через flashVars / GET запрос, или, если метод вызывается с сервера - секрета приложения api_secret (секрет Вы можете менять при редактировании страницы приложения).
Что необходимо записать вот сюда:
parameter_name=parameter_value
Т.е. какие именно параметры?
Вот это правильный запрос?

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

sig=MD5.encrypt(viewer_id+'api_id='+api_id+'method=getUserBalancev=2.0'+api_secret);            var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getUserBalance&v=2.0&sig="+sig);
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Подскажите, что неправильно (getUserBalance)

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

Alf162
Без разницы с какого исходника) Сразу не заменишь - забудешь и будешь путаться. Но мне на самом деле всё равно) Только читать такой код не очень хочется...
Я не проверял твой код, но то что выводило бы не правильно - это я увидел.

Ты используешь Вконтакте API 2.0, поэтому читай инструкцию по этой версии, а не по 3.0.

С библиотекой vkApi, которую ты используешь, не нужно заботиться о parameter_name=parameter_value, параметры передаются в функции и обрабатываются библиотекой как надо.
Alf162
Сообщения: 7
Зарегистрирован: 08 авг 2010, 13:10

Re: Подскажите, что неправильно (getUserBalance)

Сообщение Alf162 »

А почему выводило бы неправльно?
исправил названия:

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

package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;    import vk.VkApiNode;     public class Main extends Sprite {        private var api_id:Number=1918008;// id вашего приложения        private var api_secret:String="q2U86USN75";// секретный ключ        private var api:VkApiNode;        private var viewer_id;        private var server_url;        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var query:String;         public function Main():void {            viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;            // определяем адрес сервиса API (vkontakte.ru или vk.com)            server_url = LoaderInfo(root.loaderInfo).parameters.api_url + '?';//            server_url = "vkontakte.ru?";            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            query=api.getUserBalance();            url_request=new URLRequest(query);            url_loader=new URLLoader;            url_loader.addEventListener(Event.COMPLETE,balanc);            url_loader.load(url_request);        }         public function balanc(event:Event):void {            // обрабатываем полученный ответ            var bl:XML=new XML(url_loader.data);                       for each (var user:XML in bl.*) {                               friends_tf.text='Ваш баланс=' + user.balance;            }        }           }}
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Подскажите, что неправильно (getUserBalance)

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

Alf162
Потому что читай про то как работать с XML!
Вот такой ответ тебе возвратит запрос:

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

<?xml version="1.0" encoding="utf-8"?><response><balance>350</balance></response>
То есть единственное что нужно вытащить это balance = 350. Зачем в этом случае использовать for each ? Если знаешь что это такое, то нелогично, правда?
Ты попробуй как я тебе написал. И подробней описывай проблему: просто ничего не выводит или ошибки пишет?
Alf162
Сообщения: 7
Зарегистрирован: 08 авг 2010, 13:10

Re: Подскажите, что неправильно (getUserBalance)

Сообщение Alf162 »

Понятно, что совсем необязательно здесь for each, но ведь по идее должно работать, а на экране просто: "Ваш баланс" и все
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Подскажите, что неправильно (getUserBalance)

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

Alf162
Если знать как работать с XML с использованием for each, то и на практике работать будет.

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

            for each (var user:XML in bl) {                friends_tf.text='Ваш баланс=' + user.balance;            }
А если только думать что по идее должно работать, и надеяться, то сложно в программировании будет. Еще раз напишу, что почитай про работу с XML в AS3. Если собираешь продолжать делать приложения, то эти знания очень пригодятся.
Alf162
Сообщения: 7
Зарегистрирован: 08 авг 2010, 13:10

Re: Подскажите, что неправильно (getUserBalance)

Сообщение Alf162 »

Все равно не работает. Я переделал:

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

public function balanc(event:Event):void {            // обрабатываем полученный ответ            externalXML = new XML(url_loader.data);friends_tf.text = externalXML.toXMLString();                    }
В ответ получил:
<error>
<error_code>500</error_code>
<error_msg>Permission denied. You must enable votes processing in application settings</error_msg>
<request_params list="true">
<param>
<key>api_id</key>
<value>1918008</value>
</param>
<param>
<key>format</key>
<value>XML</value>
</param>
<param>
<key>method</key>
Получается где-то в запросе ошибка?
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

Re: Подскажите, что неправильно (getUserBalance)

Сообщение alexei »

Для приличия надо включить систему платежей в приложении.
Ответить