Главная » Windows Phone SDK
Windows Phone SDK
1. Подготовка к использованию
    1.1. Настройка Uri-схемы в приложении
2. Подключение в приложении
3. Работа с SDK
    3.1. Инициализация SDK
4. Авторизация
    4.1. Авторизация пользователя через WebView
    4.2. Авторизация пользователя через приложение VK
5. Вызов методов API
6. Создание записей на стене пользователя
7. Обработка ошибок валидации и капчи

SDK упрощает использование API ВКонтакте в приложениях на Windows Phone. Пользователи смогут пройти авторизацию без ввода логина и пароля. После этого вы сможете сразу начать использовать методы API.

Страница проекта и исходный код на GitHub:
http://github.com/VKCOM/vk-windowsphone-sdk

Поддерживаются версии Windows Phone 8.0 и выше.
1. Подготовка к использованию
Перед началом работы с 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).


1.1. Настройка Uri-схемы в приложении
Необходимо указать настройки протокола обратного вызова (чтобы приложение 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);
   }
}
2. Подключение в приложении
Добавьте ссылку на проект VK.WindowsPhone.SDK.
Исходный код на GitHub
3. Работа с SDK
3.1. Инициализация SDK
Перед использованием SDK необходимо инициализировать:
VKSDK.Initialize("%your_app_id_here%");
VKSDK.WakeUpSession();

4. Авторизация
4.1. Авторизация пользователя через WebView
Производится вызовом метода
VKSDK.Authorize
Пользователь будет направлен на страницу авторизации. В случае успеха будет вызвано событие
VKSDK.AccessTokenReceived
в противном случае
VKSDK.AccessDenied


4.2. Авторизация пользователя через приложение VK
Приложение VK, начиная с версии 4.1, поддерживает авторизацию пользователей сторонних приложений.

Для авторизации вызовите:
VKSDK.Authorize(_scope, false, false, LoginType.VKApp);


5. Вызов методов API
Для доступа к 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 */
                });

6. Создание записей на стене пользователя
SDK предоставляет UI для создания записей на стене. Для этого используется метод VKSDK.Publish(inputData), при этом пользователь перенаправляется на страницу создания записи. Объект inputData имеет свойства Text, Image, ExternalLink, значения которых инициализируют эту страницу.

7. Обработка ошибок валидации и капчи
Ошибку валидации 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);

}