Project Description
This is a silverlight library that helps to perform JSON requests to vkontakte API directly from C# code avoiding interaction with java scripts.

Following text is going to be in russian language... sorry :)


Предыстория
Когда узнал, что Silverlight приложения наконец-то доступны Вконтакте, решил мокнуться во взаимодействие с API, и как оказалось все не так радужно.

Основная загвоздка - crossdomain communication, т.е. silverlight приложение не может напрямую взаимодействовать с API.

Один из существующих workaround'ов - использование JSON, но здесь тоже не все гладко. Готовые решения от других разработчиков требуют взаимодействия вашего silverlight application с JavaScrips, что лично мне совсем не по душе.

Инициализация API
VkApi это моя попытка перенести вызовы API исключительно в C# код. Все вызовы API доступны через singleton Vk. Для начала работы singleton должен быть инициализирован:
Vk.Instance.VkInitSucceeded += new EventHandler(Instance_VkInitSucceeded); 
Vk.Instance.VkInitFailed += new EventHandler(Instance_VkInitFailed);

// objectID - ID элемента object содержащего ваше silverlight application 
// appID - ID вашего silverlight application (доступно на странице настроек) 
// secret - секрет вашего silverlight application (доступно на странице настроек) 
// uid - ID текущего пользователя 
// testMode - приложение в тестовом режиме 

Vk.Instance.Initialize(objectID, appID, secret, uid, testMode);


Взаимодействие с API
Для работы с Вконтакте API используйте метод Vk.Instance.Api.DirectRequest. Результат выполнения API будет приходить через событие Vk.Instance.Api.DirectRequestCallback в формате JSON. Описание доступных API смотрите здесь.
Vk.Instance.Api.DirectRequestCallback += new ApiResponse_Handler(Api_DirectRequestCallback); 
Vk.Instance.Api.DirectRequest("photos.getAlbums", new Parameter[] { new Parameter("uid", uid) });

Для некоторых методов уже существуют обертки, возвращающие результат в виде объектной модели. Чтобы "обернуть" все - понадобится время :)
Vk.Instance.Api.GetGroupsFull(new ApiCallback(this.GetGroupsFullCallback));

Взаимодействие с externals доступно через Vk.Instance.External.
Vk.Instance.External.ShowPaymentBox();

Так же вы можете просмотреть значения параметров, переданных в ваш IFrame, через Vk.Instance.Parameters. Доступны следующие параметры:
ApplicationID 
ApplicationSettings 
ViewerID 
ViewerType 
UserID 
GroupID 
IsApplicationUser 
AuthKey 
Language 
ParentLanguage 
Referrer 
LcName

Last edited Sep 8, 2010 at 7:14 PM by vordoom, version 6