Использование APIConnection (getProfiles)

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Использование APIConnection (getProfiles)

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

Использование APIConnection (getProfiles)
ActionScript 3.0 (Adobe Flash CS5)

Некоторым сложно разобраться с официальным примером использования APIConnection. В этом уроке, вы узнаете как обращаться к ВКонтакте API с помощью этого класса.

Это приложение будет получать профиль пользователя методом getProfiles.


1. Создаём Новый документ Flash File (ActionScript 3.0)
Добавляем на сцену текстовое поле и называем его result_tf.
Сохраняем fla.

2. Скачиваем APIConnection.zip
http://vkontakte.ru/source/APIConnection.zip
Папку vk из архива vk_api_connection\src\ кладем в папку с сохраненным fla.

3. Создаем Новый as-файл
Пишем код:

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

/* http://flapps.ru/forum/ - форум о создании приложений */package {    import flash.display.Sprite;    import flash.events.*;    import vk.APIConnection;    import vk.events.*;     public class Main extends Sprite    {        public var api_id:Number;        public var viewer_id:Number;        public var sid:String;        public var secret:String;         public function Main()        {            // получаем flashVars            var flashVars:Object = stage.loaderInfo.parameters as Object;            // присваиваем переменным значения из flashVars            api_id = flashVars['api_id'];            viewer_id = flashVars['viewer_id'];            sid = flashVars['sid'];            secret = flashVars['secret'];             // для тестирования локально, вводим свои данные здесь и раскоменчиваем код            /*flashVars['api_id'] = 1728947;            flashVars['viewer_id'] = 1306422;            flashVars['sid'] = 'a1006fd1e8gb9bd669e1119280166bc6cb9110b8a111550333bf041301';            flashVars['secret'] = '7ef8l6a4p8';            */             // инициализация            var VK:APIConnection = new APIConnection(flashVars);            // выполняем запрос getProfiles, в качестве параметра uids используем id пользователя, просматривающего приложения, в параметре fields указываем photo_big - большая фотография пользователя            VK.api('getProfiles', { uids: flashVars['viewer_id'],fields:'photo_big' }, onProfileLoaded, onError);        }         // данные получены        private function onProfileLoaded(data: Object):void        {            // обрабатываем полученный ответ            result_tf.text = data[0]['uid'] + ' ' + data[0]['first_name'] + ' ' + data[0]['last_name'] + ' ' + data[0]['photo_big'];        }         // если произошла ошибка        private function onError(data: Object):void        {            result_tf.text = data.error_msg;        }    }}
Сохраняем файл в папку с fla и называем его Main.as
Связываем as с fla. Если не знаете как, то посмотрите в этом уроке http://flapps.ru/forum/topic3.html (пункт 6).
Экспортируем приложение.

4. Загружаем приложение в контакт
Приложение должно быть включено.
Без использования контейнера.

Тестируем.
В поле result_tf должны появится Имя, Фамилия и ссылка на аватарку пользователя.


Локальное тестирование.

Для локального тестирования нужно вручную прописать параметры flashVars в коде.
Чтобы узнать эти параметры:
- Заходим на страницу приложения
- Открываем исходный код
- Ищем в коде текст "secret".
Рядом с этим текстом находятся и другие параметры. Нам нужны api_id, viewer_id, sid и secret.

В коде приложения меняем в строках 33-36 значения на свои.
Раскомментируем эти строки, убрав "/*" и "*/".

Теперь можете нажать Ctrl+Enter и протестировать приложение локально.


Другие методы ВКонтакте API используются аналогично.
После получения данных, делайте их вывод (если не знаете что можете получить) и обрабатывайте. О том как работать с JSON в ActionScript 3.0 написано в уроке Работа с JSON в ActionScript 3.0.

Исходник http://flapps.ru/example/APIConnection_example.rar
nikosid
Сообщения: 2
Зарегистрирован: 15 янв 2011, 21:08

Re: Использование APIConnection (getProfiles)

Сообщение nikosid »

Скачал Ваш пример - не работает. Выдаёт "Incorrect signature" локально, а на сервере показывает полоску прелоадера и всё. Пробовал и исходными данными и со своими данными приложения - ничего не меняется.
Подскажите в чём причина пожалуйста.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Использование APIConnection (getProfiles)

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

Только что проверил - работает.
nikosid писал(а):Выдаёт "Incorrect signature" локально
Проверь что ввел верные данные и раскомментировал нужные строки.
nikosid писал(а):на сервере показывает полоску прелоадера
Контейнер включен?
Александр писал(а):4. Загружаем приложение в контакт
Приложение должно быть включено.
Без использования контейнера.
Sasha
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48

Re: Использование APIConnection (getProfiles)

Сообщение Sasha »

Всё работает!!! СПС За урок!! У меня вопрос!
Как из метода friends.get результат погрузить в listbox или в combobox???
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Использование APIConnection (getProfiles)

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

Sasha

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

            import fl.data.*;             var dp:DataProvider;            dp = new DataProvider();            for (var key:Object in data)            {                dp.addItem({label:data[key]['first_name']+' '+data[key]['last_name'], data:data[key]['uid']});            }            dp.sortOn("label"); // сортируем по имени, а не по id            friends_lst.dataProvider = dp;
Sasha
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48

Re: Использование APIConnection (getProfiles)

Сообщение Sasha »

Спасибо, Александр!!!
А ещё 1 вопрос! а можно таким кодом подгружать список друзей в list box из gui библиотеки?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Использование APIConnection (getProfiles)

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

Sasha
Нужен другой код. Скачай вконтакте пример использования библиотеки gui и разберись.
turikhay
Сообщения: 26
Зарегистрирован: 01 фев 2011, 15:50

Re: Использование APIConnection (getProfiles)

Сообщение turikhay »

все ясно.
LonelyANDRoid
Сообщения: 34
Зарегистрирован: 11 мар 2011, 16:06

Re: Использование APIConnection (getProfiles)

Сообщение LonelyANDRoid »

Александр,
будьте добры, посвятите, пожалуйста.
Вот здесь пишут: Для обращения к ВКонтакте API необходимо использовать функцию объекта VK:
VK.api(methodName: String, params: Object, [onComplete: Function, OnError: Function]).

Правильно ли я понял, благодаря фигурным скобкам текст следующей части строки { uids: flashVars['viewer_id'],fields:'photo_big' } считается объектом?
И подскажите, пожалуйста, как добавить к этому запросу другие fields, например nickname или country?
VK.api('getProfiles', { uids: flashVars['viewer_id'],fields:'photo_big', 'nickname', 'country'}, onProfileLoaded, onError); // это ведь неправильный вариант?
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Использование APIConnection (getProfiles)

Сообщение bodnar »

{ uids: flashVars['viewer_id'],fields:['photo_big', 'nickname', 'country']}

мм? :roll:
Ответить