Привет, друзья. В этом посте я расскажу о том как отправить первый запрос серверу ВКонтакте, получить и обработать ответ от него. Запрашивать будем список друзей определённого пользователя. Список того, что нужно знать для написания приложения для контакта в этой статье. Приступим.Прежде чем начать писать код приложения, его нужно создать на vkontakte.ru, чтобы получить идентификатор приложения и секретный код приложения, без них отправка запросов серверу контакта невозможна.
Зайдите в свой аккаунт вконтакте. В самом низу страницы нажмите на ссылку «разработчикам», ну а там уже нажмите на кнопку «Создать приложение» и следуйте инструкциям, только не забудьте выбрать Flash/IFrame приложение.
Теперь займёмся написание самого приложения. Запустите Adobe Flash, я использую Flash CS5, но принципиальных отличий от CS4 нет. Создайте пустое приложение ActionScript 3.0 (File->New->ActionScript3.0->OK)
Хочу оговориться, что в этой статье код будем размещать в кадре, так как он не большой, но вообще в ActionScript 3.0 код всегда следует размещать в отдельных файлах.
И так, сейчас у нас чистый слой. Создадим на нём 2 динамических текстовых поля и кнопку. В одно текстовое поле будут выводиться id друзей а в другое их имена и фамилии, при нажатии на кнопку будет отправляться запрос. Instance Name для текстовых полей id_output и name_output соответственно и для кнопки go_button. Instance Name – это имена переменных, через которые мы будем обращаться к элементам сцены в коде.
Теперь всё готово, чтобы написать первые строки кода. Выберите первый (и единственный) кадр нашей сцены и нажмите F9, откроется редактор ActionScript.Не забывайте, что код мы будем писать самостоятельно, поэтому убедитесь, что отключен упрощенный режим редактора. Кроме того для удобства можете скрыть левую панель с операторами, так как она нам не нужна. Редактор должен выглядеть вот так:
Сейчас мы должны сохранить наше приложение. Создайте для него отдельную папку и сохраните его туда, например D:\VKAPI\GetFriends\GetFrinds.fla
Для начала нам понадобится подключить все необходимые библиотеки. В этом приложении понадобится только библиотека MD5, зачем она нужна расскажу немного ниже. Но дело в том, что Flash не включает в себя эту библиотеку и нам придётся использовать стороннюю, не проблема, скачать её можно по этой ссылке.
Создайте в папке, куда вы сохранили приложение новую папку libs (имя можете выбрать другое) и закиньте в неё скачанный файл MD5.as.
Теперь пишем первую строчку кода:
import libs.MD5;
Таким образом мы подключили библиотеку MD5.
Далее нам нужно объявить все необходимые переменные:
var URLLoad:URLLoader = new URLLoader(); // загрузчик для загрузки id
var URLLoad_names:URLLoader = new URLLoader(); // загрузчик для загрузки имён
var XMLdata:XML; //в эту переменную будет сохраняться ответ сервера в формате XML
var v:URLVariables = new URLVariables(); //в этой переменной будут храниться данные, которые мы отправляем на сервер контакта
var API_ID:String = "********"; //id вашего приложения
var VIEWER_ID:String = "*******"; //id пользователя, который просматривает приложение. Данная переменная должна браться из переменных браузера flash_vars либо из контейнера контакта, но сейчас просто впишите в неё свой id
var API_SECRET:String = "APFFhywt9K"; //секретный код, его можно просмотреть на странице настроек приложения в контакте
var API_URL:String = "http://api.vkontakte.ru/api.php"; //адрес скрипта, которому мы будем отправлять запросы
var TEST_MODE:String = "1"; //режим тестирования, 1 – включен, 0 – отключён.
Теперь нужно назначить слушателя для нашей кнопки, чтобы реагировать на её нажатие, так и делаем:
go_button.addEventListener(MouseEvent.CLICK, ButtonGO);
Теперь напишем саму функцию ButtonGO:
function ButtonGO(e:MouseEvent):void
{
var sig = MD5.encrypt(VIEWER_ID+"api_id="+API_ID+"method=getFriendstest_mode="+TEST_MODE+"v=2.0"+API_SECRET); //вот тут то нам и пригодилась библиотека MD5. Дело в том, что одним из требований ВКонтакте API является наличие в запросе контрольной суммы всех переменных запроса, упорядоченных в алфавитном порядке и закодированных по алгоритму MD5, это нужно для защиты запросов от перехватов и изменения.
var URLReq:URLRequest = new URLRequest(API_URL); //создаём новый запрос и инициализируем его адресом скрипта контакта
//Далее создаём все переменные, которые нужны для запроса
v.api_id = API_ID;
v.v = "2.0";
v.method = "getFriends"; //здесь указываем какой метод мы используем, так как в данный момент нам нужно получить список id всех наших друзей, то используем метод getFriends
v.test_mode = TEST_MODE;
v.sig = sig;
URLReq.data = v; //Добавляем все созданные переменные запросу
URLReq.method = URLRequestMethod.POST; //Указываем метод отправки запроса
URLLoad.load(URLReq); //Отправляем запрос на сервер
URLLoad.addEventListener(Event.COMPLETE,OnLoadId); //добавляем слушателя, который отслеживает ответ с сервера и когда тот приходит вызывает функцию OnLoadId
}
И так, мы отослали запрос серверу и получили от него ответ. Теперь нам нужно его обработать, чем и занимается функция OnLoadId, давайте её напишем:
function OnLoadId(e:Event):void
{
var uids:String = ""; //в эту переменную мы сохраним все idдрузей, чтобы потом с их помощью узнать их имена и фамилии
XMLdata = new XML(URLLoad.data); //сохраняем пришедший с сервера ответ в XML переменную
var len:Number = XMLdata.uid.length(); //узнаём, сколько же у нас друзей, то есть сколько id пришло с сервера в его ответе
// Запускаем цикл, который перебирает все пришедшие id и выводит их в нужное текстовое поле, кроме того формируется строка из этих id разделённых запятыми
for(var i:Number=0;i
id друзей уже выведены, теперь осталось узнать их имена и фамилии. Для этого существует метод getProfiles, с помощью которого можно узнать любую информацию о пользователе, но нас сейчас интересуют только имя и фамилия, но вы можете добавить свои поля, посмотрев их список в описании этого метода здесь
var fields:String = "first_name,last_name"; // вот именно те поля, которые мы хотим узнать
var sig = MD5.encrypt(VIEWER_ID+"api_id="+API_ID+"fields="+fields+"method=getProfilestest_mode="+TEST_MODE+"uids="+uids+"v=2.0"+API_SECRET);
var URLReq:URLRequest = new URLRequest(API_URL);
v.api_id = API_ID;
v.v = "2.0";
v.method = "getProfiles";
v.test_mode = TEST_MODE;
v.sig = sig;
//Как видите ниже для метода getProfile добавились ещё 2 переменные
v.uids = uids;
v.fields = fields;
URLReq.data = v;
URLReq.method = URLRequestMethod.POST;
URLLoad_names.load(URLReq);
URLLoad_names.addEventListener(Event.COMPLETE,OnLoadNames);
}
Теперь осталось лишь вывести имена и фамилии на экран, чем и займётся функция OnLoadNames, в ней нет ничего сложного, она просто перебирает XML данные и выводит их в текстовое поле:
function OnLoadNames(e:Event):void
{
XMLdata = new XML(URLLoad_names.data);
var len:Number = XMLdata.user.length();
for(var i:Number=0;i
Вот и всё, в итоге, мы получили наше первое приложение, которое использует ВКонтакте API:
В следующие разы мы будем оформлять все функции API в отдельную библиотеку и будем просто подключать её к нужному приложению, но для первого раза, чтобы хоть немного разобраться как всё работает, я думаю, достаточно. Обязательно читайте официальную документацию по ВКонтакте API.
В конце приведу ещё раз код приложения полностью:
import libs.MD5;
var URLLoad:URLLoader = new URLLoader();
var URLLoad_names:URLLoader = new URLLoader();
var XMLdata:XML;
var API_ID:String = "1833756";
var VIEWER_ID:String = "9060138";
var API_SECRET:String = "APFFhywt9K";
var API_URL:String = "http://api.vkontakte.ru/api.php";
var TEST_MODE:String = "1";
var v:URLVariables = new URLVariables();
URLLoad.addEventListener(Event.COMPLETE,OnLoadId);
go_button.addEventListener(MouseEvent.CLICK, ButtonGO);
function OnLoadId(e:Event):void
{
var uids:String = "";
XMLdata = new XML(URLLoad.data);
trace(XMLdata);
var len:Number = XMLdata.uid.length();
for(var i:Number=0;i
На сегодня всё, всем хорошего настроения, удачи !
Видео, которое всегда поднимает настроение =)
[youtube]http://www.youtube.com/watch?v=S1ZZreXEqSY[/youtube]
На сайте WATCHESHOP вы можете купить часы в москве