Личный статус (activity: get, set, getHistory и т.п.)

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

Личный статус (activity: get, set, getHistory и т.п.)

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

Личный статус (методы activity: get, set, getHistory, deleteHistoryItem, getNews)
ActionScript 3.0 (Adobe Flash CS4)

Приложение показывает текущий статус пользователя, устанавливает статус, показывает историю статусов, удаляет статус, показывает обновления статусов друзей.

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


1. Добавляем на сцену:
Текстовые поля с именами:
- uid_tf (поле ввода id того, чей статус будем узнавать)
- text_tf (поле ввода текста статуса, который будем устанавливать)
- uid_h_tf (поле ввода id того, чью историю статусов будем просматривать)
- aid_tf (поле ввода id статуса, который будем удалять)
- result_tf (поле с результатами)

Кнопки с именами:
- get_btn
- set_btn
- getHistory_btn
- deleteHistoryItem_btn
- getNews_btn


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

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

/*     http://flapps.ru/forum/ - форум о создании флеш приложений на основе ВКонтакте API */package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;    import vk.VkApiNode;        import flash.ui.*;     public class Main extends Sprite {        private var api_id:Number=1727522;// ID приложения        private var api_secret:String="1gqE8m34rb";// секретный ключ        private var api:VkApiNode;        private var server_url;        private var viewer_id;        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var query:String;        private var wrapper:Object;         public function Main():void {            this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );        }         public function onAddedToStage(e: Event):void {            wrapper=Object(parent.parent);            // вызываем окно с настройками приложения (доступ к статусам пользователя)            wrapper.external.showSettingsBox(1024);             // добавляем действия кнопкам            get_btn.addEventListener(MouseEvent.CLICK, get_btnClick);            set_btn.addEventListener(MouseEvent.CLICK, set_btnClick);            getHistory_btn.addEventListener(MouseEvent.CLICK, getHistory_btnClick);            deleteHistoryItem_btn.addEventListener(MouseEvent.CLICK, deleteHistoryItem_btnClick);            getNews_btn.addEventListener(MouseEvent.CLICK, getNews_btnClick);                        // определяем адрес сервиса API (vkontakte.ru или vk.com)            server_url = wrapper.application.parameters.api_url + '?';                     // заполняем текстовые поля            viewer_id=wrapper.application.parameters.viewer_id;            uid_tf.text=viewer_id;            uid_h_tf.text=viewer_id;            text_tf.text='Я скачал исходник приложения на сайте http://flapps.ru';        }         public function get_btnClick(e: MouseEvent):void {            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            var uid=int(uid_tf.text); // id пользователя            query=api.getActivity(uid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,activityGiven);            url_loader.load(url_request);        }         public function activityGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='Время: ' + response.time + '\nСтатус: ' + response.activity + '\nid: ' + response.id;        }         public function set_btnClick(e: MouseEvent):void {            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            var activity_text=text_tf.text; // текст статуса            query=api.setActivity(activity_text);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,activityBeSet);            url_loader.load(url_request);        }         public function activityBeSet(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='Ответ: ' + response[0];        }         public function getHistory_btnClick(e: MouseEvent):void {            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            var uid=int(uid_tf.text); // id пользователя            query=api.getActivityHistory(uid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,activityHistoryGiven);            url_loader.load(url_request);        }         public function activityHistoryGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            var result_text = '';             for each (var item in response.activity) {                 result_text = result_text + 'id: ' + item.id + '\nТекст: ' +item.text + '\n\n';             }              result_tf.text=result_text;        }            public function deleteHistoryItem_btnClick(e: MouseEvent):void {            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            var aid=aid_tf.text; // id статуса            query=api.deleteActivityHistoryItem(aid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,historyItemDeleted);            url_loader.load(url_request);        }         public function historyItemDeleted(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='Ответ: ' + response[0];        }                public function getNews_btnClick(e: MouseEvent):void {            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            query=api.getActivityNews();            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,newsGiven);            url_loader.load(url_request);        }         public function newsGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            var result_text = '';            for each (var item in response.text) {                 result_text = result_text + item + '\n\n';            }             result_tf.text=result_text;        }        }}
Заменяем api_id и api_secret на свои данные.

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


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

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

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


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

Исходник http://flapps.ru/example/activity.rar
google
Сообщения: 5
Зарегистрирован: 12 апр 2010, 23:01

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение google »

Круто! Спасибо! :)
Аватара пользователя
lewka151
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение lewka151 »

Классно, спасибо=))) :)
VIP
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение VIP »

Та же прблема тут вылазит окно разрешения 2 раз после установки, сейчас в топике http://flapps.ru/forum/topic373.html мы собрались навсегда решить эту проблему, кто знает причину пишите туда!!!!!!!
Аватара пользователя
lewka151
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение lewka151 »

а это нормально что когда пишешь русскими буквами выдает ошибку? http://vkontakte.ru/app1864912
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Личный статус (activity: get, set, getHistory и т.п.)

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

lewka151
Ты не используешь библиотеку, которая используется в этом уроке. С ней такой проблемы не возникает. Строку нужно кодировать. В библиотеке vkApi кодирование происходит автоматически. Посмотри как это сделано там.
Аватара пользователя
lewka151
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение lewka151 »

спасибо=)
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение 112 »

александр извините. вы не могли мы сделать такую функцию у себя в приложении переверни текст к верх ногами ведь многие это ставят в статус :)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Личный статус (activity: get, set, getHistory и т.п.)

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

112
Сделаю, когда будет на это время.
Спасибо за интерес к приложению)
dead_luminor

Re: Личный статус (activity: get, set, getHistory и т.п.)

Сообщение dead_luminor »

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

text_tf.text=Исходник был скачан с flapps.ru.';
Как сделать подгрузку из txt файла с постороннего сервера этого текста? И как чтобы при нажатии на кнопку (назовем ее btn1) в это поле подгружался текст рандомно из файлов. Допустим есть 3 файла, при первом нажатии может подгрузить из 1, может из 2, из 3 и т.д
Ответить