Сервисы Live Connect: SkyDrive
Цель работы: освоить технологию работы с сервисом хранения данных SkyDrive и получить сведения, необходимые для дальнейшей работы со службами Live Connect http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202955(v=vs.105).aspx Особенности передачи файлов и ограничения
Live Connect, предварительная подготовка
Набор служб Live Connect предоставляет разработчику следующие инструменты:
- API для взаимодействия с хранилищем данных SkyDrive, в котором можно работать с папками, и файлами, такими, как фотоснимки, видеоролики, и документы. Файлы и папки можно создавать, удалять, перемещать, отправлять в облачное хранилище с устройства и загружать на устройство из облачного хранилища. API SkyDrive, кроме того, позволяет работать с комментарии и тегами.
- Доступ к Hotmail, который позволяет работать с контактами и календарями.
- Работу с Windows Live Messenger, который предназначен для обмена мгновенными сообщениями.
Для работы с этими службами, которая подразумевает предварительную проверку подлинности пользователя, используется сервис Live. Кроме того, этот сервис предоставляет сведения о профиле пользователя. Подробности о службах Live Connect можно узнать из документации: http://msdn.microsoft.com/ru-ru/library/live/ff621314.aspx.
Для разработки с использованием Live API следует загрузить и установить соответствующий SDK, http://msdn.microsoft.com/ru-ru/live/ff621310.aspx. Он предоставляет набор элементов управления и API, которые позволяют интегрировать приложения со службой единого входа (SSO, Single Sign On) учетных записей Microsoft (в общем случае это позволяет производить автоматическую аутентификацию пользователя в приложениях, которые поддерживают одного и того же провайдера аутентификации), работать со SkyDrive, Hotmail и Windows Live Messenger из приложений для Windows Phone и Windows 8.
Перед началом работы над приложением нужно создать учётную запись для приложения в Центре разработчиков Live Connect (https://manage.dev.live.com/Applications/Create). Здесь нужно указать название приложения и язык, который оно использует. После регистрации приложения ему будут назначены параметры Client ID и Client secret. Первый из них, идентификатор приложения-клиента, потребуется нам в последующей работе. Кроме того, после создания нового приложения нужно указать, что это – мобильное приложение, установив переключатель Mobile client app (Мобильное клиентское приложение) на странице настроек приложения в значение Yes (Да), рис. 41.1.
Службы Live Connect доступны для многих платформ – как мобильных, так и настольных. Мы создаём мобильное приложение и эта настройка нужна для правильного проведения аутентификации.
Разработка приложения
Мы собираемся создать приложение, которое может отправлять файлы в папку, расположенную на SkyDrive и выполнять загрузку файлов. Работа со SkyDrive подразумевает различные сценарии использования. Если посмотреть, например, на приложения пакета Microsoft Office, мы увидим, что они используют SkyDrive как одно из мест хранения документов, позволяя открывать документы, которые там хранятся и сохранять их. Некоторые приложения позволяют пользователям делать резервные копии данных, некоторые позволяют открывать какие-либо файлы, предварительно записанные пользователем в SkyDrive. Если ваше приложение каким-то образом работает с некими файлами или данными пользователя, вполне оправдано будет предоставить ему доступ к SkyDrive. Это повысит удобство приложения и его ценность для пользователя.
Создадим новый проект по шаблону Приложение Windows Phone. Перед началом работы, при условии предварительной установки Live SDK для Windows Phone, добавим в проект ссылки на сборки Microsoft.Live.Controls и Microsoft.Live.
Добавим в состав панели элементов элемент управления SignInButton. Это очень важный элемент управления, он автоматизирует аутентификацию пользователя. Кроме того, используя интерфейс окна входа в систему, вызываемому по нажатии этой кнопки, пользователь может зарегистрировать новую учетную запись. Элемент управления выглядит как кнопка, которую можно разместить на странице приложения. Для успешной аутентификации и возможности выполнять те действия, которые мы планируем выполнить нужно настроить свойства кнопки. В частности, это следующие:
ClientID – сюда нужно скопировать тот идентификатор клиентского приложения, который выдан при регистрации приложения, описанной выше.
Scopes – здесь нужно указать так называемые области (scopes), то есть области пользовательской информации, с которыми планируется работать. Так как мы собираемся работать с файлами на SkyDrive, мы укажем при настройке элемента управления область wl.skydrive_update, для того, чтобы приложение могло работать в режиме единого входа – область wl.signin. Подробнее об областях можно почитать здесь http://msdn.microsoft.com/ru-ru/library/live/hh243646.
Кроме того, нужно задать обработчик события SessionChandged для этой кнопки. Он используется для входа в службу и выхода из неё.
На странице присутствуют еще две кнопки – одна из них инициирует отправку файла в SkyDrive, вторая – получение. Есть текстовое поле, куда выводится содержимое файла (мы работаем с обычным .TXT-файлом) и текстовый блок, куда выводятся сведения о том, выполнена ли аутентификация. Те же сведения можно узнать, взглянув на кнопку входа – она автоматически изменяется после входа в систему либо после выхода из неё.
Для отправки в SkyDrive мы используем файл, который находится в пакете приложения. В нашем случае используется метод UploadAsync, который может принимать поток, получаемый при открытии данного файла. Неважно, где именно хранится файл. Весьма желательно дать пользователю возможность контролировать передачу файлов, например, в явном виде задавать, файлы какого размера может передавать и принимать приложение в текущем режиме работы. При выполнении фоновой передачи данных нужно руководствоваться рекомендациями, изложенными в материале "Фоновая передача данных для Windows Phone", http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202955%28v=vs.105%29.aspx
На рис. 41.2. вы можете видеть экран среды разработки и начальную страницу приложения. Обратите внимание на то, что данный проект имеется в дополнительных материалах к лабораторной работе, но для того, чтобы он работал, вам понадобится использовать собственный идентификатор приложения (ClientID), выше мы говорили о том, как его получить.