Работа с переменными(getVariable, getVariables, putVariable)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Работа с переменными(getVariable, getVariables, putVariable)

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

Работа с переменными (getVariable, getVariables, putVariable)
ActionScript 3.0 (Adobe Flash CS4)

Когда-то давно пробовал работать с переменными, решил оформить код для урока и выложить здесь. Может быть кому-нибудь пригодится.
Приложение записывает значение в переменную, получает значение из одной переменной, получает значения сразу нескольких переменных.

Для работы с методами ВКонтакте API используется библиотека VkApi. Находится в архиве с исходником.

Описание используемых методов

getVariable
Возвращает значение переменной, номер которой задан в параметре key (0-4095).
key - Ключ от 0 до 4095, идентификатор переменной.

getVariables
Возвращает список значений диапазона переменных, заданного с помощью входных параметров key (номер первой переменной) и count (число переменных). Данный метод позволяет получить за один запрос до 32 переменных.
key - Ключ от 0 до 4095, идентификатор первой переменной.
count - Значение от 1 до 32, количество переменных.

putVariable
Помещает в переменную, номер которой задан в параметре key (0-4095), значение, переданное в параметре value (строка в utf-8, не более 255 байтов).
key - Ключ от 0 до 4095, идентификатор переменной.
value - Значение, которое нужно записать в переменную. Строка в utf-8, не более 255 байтов

При обращении к переменным user_vars с ключами от 1280 до 1791, необходимо в параметрах передать user_id - id пользователя, переменные которого считываются.


Создание приложения

1. Добавляем на сцену:
Текстовые поля с именами:
- var_tf (поле ввода записываемого значения)
- result_tf (поле с результатами)

Кнопки с именами:
- put_btn
- get1_btn
- get2_btn


2. Создаём Main.as и пишем код:

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

/* http://flapps.ru/forum/ - форум о создании флеш приложений на основе ВКонтакте API */package {    import flash.net.URLLoader;    import flash.net.URLRequest;    import flash.display.*;    import flash.events.*;    import vk.VkApiNode;     public class Main extends Sprite {        public var api_id:Number=1727522;// ID приложения        public var api_secret:String="1gqE8m34rb";// секретный ключ        public var api:VkApiNode;        public var url_loader:URLLoader;        public var url_request:URLRequest;        public var query:String;        public var viewer_id:Number;        public var server_url:String;          public function Main():void {            var params:Object=LoaderInfo(root.loaderInfo).parameters;            viewer_id=params['viewer_id'];            // определяем адрес сервиса API (vkontakte.ru или vk.com)            server_url=params['api_url']+'?';             api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);             put_btn.addEventListener(MouseEvent.CLICK,putVariable);            get1_btn.addEventListener(MouseEvent.CLICK,getVariable);            get2_btn.addEventListener(MouseEvent.CLICK,getVariables);         }         public function putVariable(e:MouseEvent):void {            // записываем значение из поля var_tf в переменую 1040            query=api.putVariable(1040,var_tf.text);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,onLoaded1);            url_loader.load(url_request);        }         public function getVariable(e:MouseEvent):void {            // получаем значение из переменной 1040            query=api.getVariable(1040);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,onLoaded2);            url_loader.load(url_request);        }         public function getVariables(e:MouseEvent):void {            // получаем значения из 10 переменных, начиная с переменной 1040            query=api.getVariables(1040,10);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,onLoaded3);            url_loader.load(url_request);        }         // добавлено        private function onLoaded1(event:Event):void {            var response=XML(url_loader.data);            if (response.error_code<=0) {// если нет сообщения об ошибке                result_tf.text='Добавлено';            } else {                result_tf.text='Ошибка '+response..error_msg;            }         }         // получено значение 1 переменной        private function onLoaded2(event:Event):void {            var response=XML(url_loader.data);            result_tf.text=response.toString();        }         // получено значение нескольких переменных        private function onLoaded3(event:Event):void {            var response=XML(url_loader.data);            result_tf.text='';            for each (var item in response.var_info) {                result_tf.appendText('key: ' + item.key + '\nvalue: ' +item.value + '\n\n');            }        }     }}
Заменяем api_id и api_secret на свои данные.


3. Подключаем Main.as к fla
Если не знаете как, то посмотрите как это было сделано в этом уроке http://flapps.ru/forum/topic3.html


4. Загружаем приложение в контакт
Редактирование -> Настройки -> Обновление SWF-приложения -> Обзор -> Начать загрузку.

- Если приложение выключено, то включаем
Редактирование -> Настройки -> Состояние -> Приложение включено и видно всем.

- Если включен контейнер, то выключаем
Редактирование -> Настройки -> Flash-контейнер -> Без использования контейнера.


5. Всё готово!

Исходник http://flapps.ru/example/variables.rar
Аватара пользователя
Влад
Модератор
Модератор
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение Влад »

Изображение
NikiTa
Сообщения: 97
Зарегистрирован: 06 янв 2010, 15:17

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение NikiTa »

2 ошибки при компиляции
1120: Обращение несуществующего свойства server_url.
1120: Обращение несуществующего свойства server_url.
Аватара пользователя
Влад
Модератор
Модератор
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение Влад »

NikiTa писал(а):2 ошибки при компиляции
1120: Обращение несуществующего свойства server_url.
1120: Обращение несуществующего свойства server_url.
аналогичная фигня
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Работа с переменными(getVariable, getVariables, putVariable)

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

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

        public var server_url:String;
sersche
FL Team
FL Team
Сообщения: 598
Зарегистрирован: 11 май 2010, 13:45

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение sersche »

оо.. спасибо!! щас будем пробовать..
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение agni »

что стоит хранить в этих переменных?
инфу о действиях пользователя, его заказы достижения и пр. лучше где хранить? в этих переменных или лучше использовать свой сторонний сервер (php+mysql) ?
Аватара пользователя
Влад
Модератор
Модератор
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение Влад »

лучше использовать свой сторонний сервер (php+mysql) ?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Работа с переменными(getVariable, getVariables, putVariable)

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

agni
Будешь использовать переменные контакта - не будет нагрузки на твой сервер.
Но большое количество данных придёться хранить у на сервере. Считаю что так удобнее.
Вообщем зависит конкретно от твоего приложения.
pyco.mypucmo
Сообщения: 1
Зарегистрирован: 19 окт 2010, 11:57

Re: Работа с переменными(getVariable, getVariables, putVariable)

Сообщение pyco.mypucmo »

А есть какие-нибудь известные проблемы с защитой данных, при хранении их на серверах Вконтатка? То есть, не проще ли взломать приложение, использующее сервера Вконтакта, чем те, которые использую сторонние сервера?
Ответить