Перед началом работы с VK SDK необходимо
создать Standalone-приложение. Сохраните Ваш
ID приложения (в документации ему соответствует параметр
APP_ID).
Для поддержки механизма авторизации через приложение VK необходимо заполнить поле Windows App ID.
- Для Silverlight-приложений это ProductId из файла WMAppManifest.xml.
- Для XAML-приложений это mp:PhoneIdentity.PhoneProductId из Package.appxmanifest.
В обоих случаях это значение типа
guid (например,
5130dfdb-3c66-490b-8f50-d62b757efde5).
Необходимо указать настройки протокола обратного вызова (чтобы приложение VK могло вернуть управление).
Для Silverlight-приложений укажите следующий протокол в файле
WMAppManifest.xml:
<Extensions>
<Protocol Name="vk%your_app_id%" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
</Extensions>
Для обработки вызова следует использовать
VKUriMapperHandler.HandleUri(uri), например:
public class CustomUriMapper : UriMapperBase
{
public override Uri MapUri(Uri uri)
{
var handledAuthorization = VKUriMapperHandler.HandleUri(uri);
if (handledAuthorization)
{
return new Uri("/MainPage.xaml", UriKind.Relative);
}
return uri;
}
}
Для XAML-приложений укажите протокол в файле
Package.appxmanifest:
<Extensions>
<Extension Category="windows.protocol">
<Protocol Name="vk%your_app_id%" m2:DesiredView="useLess"/>
</Extension>
</Extensions>
и добавьте файл
VKConfig.xml (build action = content) в корневой каталог Вашего проекта:
<?xml version="1.0" encoding="utf-8" ?>
<Extensions>
<Protocol Name="vk%your_app_id%" />
</Extensions>
Для обработки вызова следует использовать
VKProtocolActivationHelper.HandleProtocolLaunch(protocolArgs), например:
protected override void OnActivated(IActivatedEventArgs args)
{
base.OnActivated(args);
/*...*/
if (args.Kind == ActivationKind.Protocol)
{
/*...*/
var protocolArgs = args as ProtocolActivatedEventArgs;
VKProtocolActivationHelper.HandleProtocolLaunch(protocolArgs);
}
}
Добавьте ссылку на проект VK.WindowsPhone.SDK.
Исходный код на GitHub
Перед использованием SDK необходимо инициализировать:
VKSDK.Initialize("%your_app_id_here%");
VKSDK.WakeUpSession();
Производится вызовом метода
VKSDK.Authorize
Пользователь будет направлен на страницу авторизации. В случае успеха будет вызвано событие
VKSDK.AccessTokenReceived
в противном случае
VKSDK.AccessDenied
Приложение VK, начиная с версии 4.1, поддерживает авторизацию пользователей сторонних приложений.
Для авторизации вызовите:
VKSDK.Authorize(_scope, false, false, LoginType.VKApp);
Для доступа к API можно использовать как встроенные в SDK методы, так и получив access_token
использовать свою библиотеку.
Для вызовов методов API используйте класс
VKRequest.
Пример получения списка друзей текущего пользователя:
VKRequest.Dispatch<VKList<VKUser>>(new VKRequestParameters("friends.get", "fields", "photo_200"), (res) =>
{
if (res.ResultCode == VKResultCode.Succeeded)
{
var data = res.Data;
/* your code handling successful execution here */
}
else
{
var error = res.Error; /* can be null */
var failureCode = res.ResultCode;
/* your code handling a failure here */
}
});
При десериализации ответа сервера предполагается, что структура типа, переданного в
Dispatch<T> (в примере выше это
VKList<VKUser>) cоответствует json-строке, возвращаемой сервером.
В случае необходимости можно передать свою фунцию десериализации ответа из json. Для этого используется дополнительный параметр метода
Dispatch -- Func<string, T> customDeserializationFunc = null
Все классы моделей SDK (такие как
VKUser) объявлены как partial.
Для загрузки фотографий на сервер можно использовать класс
VKUploadRequest:
VKUploadRequest.CreatePhotoWallUploadRequest().Dispatch(
yourImageStream,
(progress) =>
{
/* your progress handler */
},
(res) =>
{
/* your result handler */
});
SDK предоставляет UI для создания записей на стене. Для этого используется метод
VKSDK.Publish(inputData), при этом пользователь перенаправляется на страницу создания записи. Объект
inputData имеет свойства
Text, Image, ExternalLink, значения которых инициализируют эту страницу.
Ошибку валидации SDK обрабатывает самостоятельно. Для корректной обработки капчи необходимо назначить обработчик на
VKSDK.CaptchaRequest. В обработчике рекомендуется использовать контрол
VKCaptchaRequestControl, являющийся составной частью SDK:
private void CaptchaRequest(VKCaptchaUserRequest captchaUserRequest, Action<VKCaptchaUserResponse> action)
{
/* put an instance of VKCaptchaRequestControl on your page and instantiate it */
captchaRequestControl.ShowCaptchaRequest(captchaUserRequest, action);
}