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

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

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

Сообщение Alf162 »

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

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

  1. package {
  2.     import flash.net.*;
  3.     import flash.display.*;
  4.     import flash.events.*;
  5.     import flash.text.*;
  6.     import vk.VkApiNode;
  7.  
  8.     public class Main extends Sprite {
  9.         private var api_id:Number=1918008;// id вашего приложения
  10.         private var api_secret:String="q2U86USN75";// секретный ключ
  11.         private var api:VkApiNode;
  12.         private var viewer_id;
  13.         private var server_url;
  14.         private var url_loader:URLLoader;
  15.         private var url_request:URLRequest;
  16.         private var query:String;
  17.  
  18.         public function Main():void {
  19.             viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;
  20.             // определяем адрес сервиса API (vkontakte.ru или vk.com)
  21.             server_url = LoaderInfo(root.loaderInfo).parameters.api_url + '?';
  22. //            server_url = "vkontakte.ru?";
  23.             // создаем и выполняем запрос
  24.             api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);
  25.             query=api.getUserBalance();
  26.             url_request=new URLRequest(query);
  27.             url_loader=new URLLoader  ;
  28.             url_loader.addEventListener(Event.COMPLETE,friendsLoaded);
  29.             url_loader.load(url_request);
  30.         }
  31.  
  32.         public function friendsLoaded(event:Event):void {
  33.             // обрабатываем полученный ответ
  34.             var responseFriends:XML=new XML(url_loader.data);
  35.            
  36.            for each (var user:XML in responseFriends.*) {
  37.                
  38.                 friends_tf.text='Ваш баланс=' + user.balance;
  39.             }
  40.         }
  41.  
  42.           }
  43. }
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург

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

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

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

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

  1.        public function friendsLoaded(event:Event):void {
  2.             // обрабатываем полученный ответ
  3.             var responseFriends:XML=new XML(url_loader.data);
  4.             friends_tf.text='Ваш баланс=' + responseFriends.balance;
  5.         }

Почитай в интернете про работу с 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
Т.е. какие именно параметры?
Вот это правильный запрос?

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

  1. sig=MD5.encrypt(viewer_id+'api_id='+api_id+'method=getUserBalancev=2.0'+api_secret);
  2.             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 »

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

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

  1. package {
  2.     import flash.net.*;
  3.     import flash.display.*;
  4.     import flash.events.*;
  5.     import flash.text.*;
  6.     import vk.VkApiNode;
  7.  
  8.     public class Main extends Sprite {
  9.         private var api_id:Number=1918008;// id вашего приложения
  10.         private var api_secret:String="q2U86USN75";// секретный ключ
  11.         private var api:VkApiNode;
  12.         private var viewer_id;
  13.         private var server_url;
  14.         private var url_loader:URLLoader;
  15.         private var url_request:URLRequest;
  16.         private var query:String;
  17.  
  18.         public function Main():void {
  19.             viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;
  20.             // определяем адрес сервиса API (vkontakte.ru или vk.com)
  21.             server_url = LoaderInfo(root.loaderInfo).parameters.api_url + '?';
  22. //            server_url = "vkontakte.ru?";
  23.             // создаем и выполняем запрос
  24.             api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);
  25.             query=api.getUserBalance();
  26.             url_request=new URLRequest(query);
  27.             url_loader=new URLLoader;
  28.             url_loader.addEventListener(Event.COMPLETE,balanc);
  29.             url_loader.load(url_request);
  30.         }
  31.  
  32.         public function balanc(event:Event):void {
  33.             // обрабатываем полученный ответ
  34.             var bl:XML=new XML(url_loader.data);
  35.            
  36.            for each (var user:XML in bl.*) {
  37.                
  38.                 friends_tf.text='Ваш баланс=' + user.balance;
  39.             }
  40.         }
  41.  
  42.           }
  43. }
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург

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

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

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

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <response>
  3. <balance>350</balance>
  4. </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, то и на практике работать будет.

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

  1.            for each (var user:XML in bl) {
  2.                 friends_tf.text='Ваш баланс=' + user.balance;
  3.             }


А если только думать что по идее должно работать, и надеяться, то сложно в программировании будет. Еще раз напишу, что почитай про работу с XML в AS3. Если собираешь продолжать делать приложения, то эти знания очень пригодятся.
Alf162
Сообщения: 7
Зарегистрирован: 08 авг 2010, 13:10

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

Сообщение Alf162 »

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

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

  1. public function balanc(event:Event):void {
  2.             // обрабатываем полученный ответ
  3.             externalXML = new XML(url_loader.data);
  4. friends_tf.text = externalXML.toXMLString();
  5.            
  6.         }

В ответ получил:
<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
Откуда: Rostov-on-Don

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

Сообщение alexei »

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