Project DescriptionThis 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, что лично мне совсем не по душе.
Инициализация APIVkApi это моя попытка перенести вызовы 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