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

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!

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

Сообщение Александр » 18 дек 2010, 19:15

Использование 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-файл
Пишем код:
  1. /*
  2.  
  3. http://flapps.ru/forum/ - форум о создании приложений
  4.  
  5. */
  6. package
  7. {
  8.     import flash.display.Sprite;
  9.     import flash.events.*;
  10.     import vk.APIConnection;
  11.     import vk.events.*;
  12.  
  13.     public class Main extends Sprite
  14.     {
  15.         public var api_id:Number;
  16.         public var viewer_id:Number;
  17.         public var sid:String;
  18.         public var secret:String;
  19.  
  20.         public function Main()
  21.         {
  22.             // получаем flashVars
  23.             var flashVars:Object = stage.loaderInfo.parameters as Object;
  24.             // присваиваем переменным значения из flashVars
  25.             api_id = flashVars['api_id'];
  26.             viewer_id = flashVars['viewer_id'];
  27.             sid = flashVars['sid'];
  28.             secret = flashVars['secret'];
  29.  
  30.             // для тестирования локально, вводим свои данные здесь и раскоменчиваем код
  31.             /*flashVars['api_id'] = 1728947;
  32.             flashVars['viewer_id'] = 1306422;
  33.             flashVars['sid'] = 'a1006fd1e8gb9bd669e1119280166bc6cb9110b8a111550333bf041301';
  34.             flashVars['secret'] = '7ef8l6a4p8';
  35.             */
  36.  
  37.             // инициализация
  38.             var VK:APIConnection = new APIConnection(flashVars);
  39.             // выполняем запрос getProfiles, в качестве параметра uids используем id пользователя, просматривающего приложения, в параметре fields указываем photo_big - большая фотография пользователя
  40.             VK.api('getProfiles', { uids: flashVars['viewer_id'],fields:'photo_big' }, onProfileLoaded, onError);
  41.         }
  42.  
  43.         // данные получены
  44.         private function onProfileLoaded(data: Object):void
  45.         {
  46.             // обрабатываем полученный ответ
  47.             result_tf.text = data[0]['uid'] + ' ' + data[0]['first_name'] + ' ' + data[0]['last_name'] + ' ' + data[0]['photo_big'];
  48.         }
  49.  
  50.         // если произошла ошибка
  51.         private function onError(data: Object):void
  52.         {
  53.             result_tf.text = data.error_msg;
  54.         }
  55.     }
  56. }

Сохраняем файл в папку с 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.

Исходник Чтобы увидеть ссылку - зарегистрируйтесь

За это сообщение автора Александр поблагодарили - 2:
Евгений, mimikria
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение nikosid » 15 янв 2011, 21:10

Скачал Ваш пример - не работает. Выдаёт "Incorrect signature" локально, а на сервере показывает полоску прелоадера и всё. Пробовал и исходными данными и со своими данными приложения - ничего не меняется.
Подскажите в чём причина пожалуйста.
nikosid

 
Сообщения: 2
Зарегистрирован: 15 янв 2011, 21:08
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Александр » 16 янв 2011, 17:23

Только что проверил - работает.

nikosid писал(а):Выдаёт "Incorrect signature" локально

Проверь что ввел верные данные и раскомментировал нужные строки.

nikosid писал(а):на сервере показывает полоску прелоадера

Контейнер включен?
Александр писал(а):4. Загружаем приложение в контакт
Приложение должно быть включено.
Без использования контейнера.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение Sasha » 18 янв 2011, 19:54

Всё работает!!! СПС За урок!! У меня вопрос!
Как из метода friends.get результат погрузить в listbox или в combobox???
Sasha

 
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.

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

Сообщение Александр » 19 янв 2011, 21:15

Sasha
  1.             import fl.data.*;
  2.  
  3.             var dp:DataProvider;
  4.             dp = new DataProvider();
  5.             for (var key:Object in data)
  6.             {
  7.                 dp.addItem({label:data[key]['first_name']+' '+data[key]['last_name'], data:data[key]['uid']});
  8.             }
  9.             dp.sortOn("label"); // сортируем по имени, а не по id
  10.             friends_lst.dataProvider = dp;
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение Sasha » 20 янв 2011, 20:06

Спасибо, Александр!!!
А ещё 1 вопрос! а можно таким кодом подгружать список друзей в list box из gui библиотеки?
Sasha

 
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.

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

Сообщение Александр » 22 янв 2011, 19:07

Sasha
Нужен другой код. Скачай вконтакте пример использования библиотеки gui и разберись.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение turikhay » 27 фев 2011, 11:36

все ясно.
turikhay

 
Сообщения: 26
Зарегистрирован: 01 фев 2011, 15:50
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

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

Сообщение LonelyANDRoid » 15 мар 2011, 02:04

Александр,
будьте добры, посвятите, пожалуйста.
Вот здесь
пишут: Для обращения к ВКонтакте 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); // это ведь неправильный вариант?
LonelyANDRoid

 
Сообщения: 34
Зарегистрирован: 11 мар 2011, 16:06
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.

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

Сообщение bodnar » 15 мар 2011, 04:58

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

мм? :roll:
Обязательно к прочтению: ActionScript 3.0 Ошибки среды выполнения

За это сообщение автора bodnar поблагодарил:
LonelyANDRoid
Аватара пользователя
bodnar
Модератор
Модератор
 
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41
Благодарил (а): 16 раз.
Поблагодарили: 185 раз.

След.

Вернуться в Уроки по использованию ВКонтакте API



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron