Реализация возможностей по работе с облаком в приложениях Windows 8 с помощью SkyDrive

Основываясь на предыдущей статье о входе в Windows 8 с помощью Windows Live ID, мы хотели бы немного поговорить об использовании SkyDrive из новых приложений Windows 8 в стиле Metro. Хотя приложения получают некоторые возможности "автоматического использования" SkyDrive для перемещения параметров, да и сами приложения перемещаются, мы знаем, что разработчики уделяют особое внимание тому, чтобы упростить для пользователей их приложений перенос создаваемых ими данных с одного устройства на другое. SkyDrive отлично подходит для этой задачи, так как каждый идентификатор Windows Live ID имеет бесплатный облачный диск. В этой статье рассказывается, как разработчики могут создавать приложения в стиле Metro, которые используют хранилище SkyDrive изнутри приложений. Эта наша первая статья по данной тематике, и за ней последуют другие! Эту статью написал Майк Торрес (Mike Torres), руководитель группы программ SkyDrive Devices and Roaming. --Стивен

Несмотря на тенденцию использования одним человеком нескольких устройств многие люди все еще хранят свои важные файлы на одном компьютере или запоминающем устройстве и не имеют к ним доступа с других своих устройств. Эти файлы привязаны к определенному месту — настольному ПК, ноутбуку или USB-ключу. Если у вас нет доступа к этому месту, значит у вас нет доступа и к вашим документам или фотографиям. Затруднен (а иногда и невозможен) не только доступ к файлам; их совместное использование с другим человеком может представлять не менее сложную задачу.

Сегодня облако позволяет людям получать (причем без всякого труда) доступ к своему содержимому практически из любого места. Файлы хранятся в одном месте и доступны с любого устройства, которое подключается к Интернету, и из любой точки земного шара. Совместное использование фотографий и совместная работа с документами в режиме реального времени также стали значительно проще благодаря наличию одной копии файла в облаке. Однако облако еще не стало одним из основных способов доступа к содержимому.

В своей вводной речи на конференции //build/ Крис Джонс (Chris Jones) говорил о том, что каждый из пользователей Windows 8 получит SkyDrive: единое облако для всех, обеспечивающее пользователю централизованный, мгновенный и общий доступ к важным файлам. В рамках конференции также прошли семинары, посвященные тому, как разработчики Windows 8 могут обеспечить поддержку облака в своих приложениях с помощью Live Connect и Live SDK. При совместном использовании приложения стиля Metro могут использовать облако Live, чтобы обеспечить единый вход с помощью Windows Live ID и доступ к персональным данным, таким как документы, фотографии и видео, в SkyDrive с разрешения пользователя.

Если вы думаете о разработке приложения в стиле Metro для Windows 8, в этой статье будет показано, как обеспечить поддержку единого входа и доступа к данным пользователя в SkyDrive, чтобы сделать ваше приложение в стиле Metro более личным (естественно, с разрешения самого пользователя).

Подключение приложений к облаку Live

При создании сборки для очередного интересного приложения на любой платформе вы, как разработчик, постоянно сталкиваетесь с двумя классами проблем:

  • Включение единого входа и регистрации для пользователей. Пользователям не нравится необходимость входа на веб-сайты и приложения, хотя разработчикам известно, что при выполнении пользователем входа увеличивается заинтересованность и лояльность по отношению к их приложению. Вход позволяет изменить впечатления людей от использования приложения и сохранить данные и настройки пользователя в приложении.
  • Простой перенос пользовательского содержимого в ваше приложение для улучшения впечатлений от использования. Задачи, которые на первый взгляд кажутся несложными, например выдача пользователю запроса на установку картинки профиля, могут быстро стать трудновыполнимыми, если учесть, что пользователи рассредоточили свои фотографии по нескольким различным устройствам и облаку.

В Windows 8 мы решили обе указанные проблемы для своих приложений, таких как «Фотографии» и «Почта», а ваши приложения в стиле Metro могут использовать те же технологии и платформу. В частности, мы решили указанные выше проблемы следующим образом:

  1. Облачное удостоверение пользователя теперь является примитивом ОС, который постоянно доступен приложениям и веб-сайтам с разрешением пользователя на поддержку единого входа. Это значит, что ваше приложение может наследовать состояние входа от пользователя и его удостоверения, при этом вам не нужно беспокоиться об отдельном процессе проверки подлинности. Это особенно важно для решения проблемы № 2.
  2. Мы сделали содержимое пользователя в облаке Live доступным приложениям посредством стандартных протоколов, таких как OAuth для проверки подлинности и авторизации, JSON в качестве полезной нагрузки для данных, возвращаемых при доступе к SkyDrive и Hotmail, и XMPP для обеспечения взаимодействия с Windows Live Messenger. Кроме того, мы выпустили предварительную версию Live SDK для Windows 8 для разработчиков, чтобы упростить разработку на базе WinRT и обеспечить интеграцию с Visual Studio 11 Express.

После первого подключения вашего приложения к Windows Live ID пользователь получает постоянную прозрачную возможность единого входа с любого компьютера, работающего под управлением Windows 8, на котором пользователь выполнил вход с использованием Windows Live ID. То же самое касается и вашего веб-сайта, для которого пользователи получают возможность единого входа, если они выполнили вход на компьютер с использованием Windows Live ID или выполнили вход на любой сайт, поддерживающий Windows Live ID, такой как Hotmail или SkyDrive.

Самый простой способ реализации единого входа совместно с Windows Live ID и интеграции содержимого SkyDrive в ваше приложение в стиле Metro заключается в использовании пакета Live SDK.

Это не значит, что ваше приложение должно использовать любые из данных служб — их использование остается полностью на усмотрение разработчика. Не существует требования, вынуждающего приложения для Windows 8 выполнять вход с помощью Live ID или использовать какое-то конкретное облачное хранилище. Это просто службы, которые разработчики приложений могут использовать исключительно по своему усмотрению.

Использование пакета Live SDK в приложении

Во-первых, если вы еще этого не сделали, необходимо установить на компьютере предварительную версию Windows 8 для разработчиков и предварительную версию Live SDK для разработчиков. При этом также устанавливается Microsoft Visual Studio 11 Express для предварительной версии Windows для разработчиков. Во-вторых, потребуется посетить сайт управления приложениями с поддержкой push-уведомлений Windows и Live Connect, чтобы настроить свое приложение в стиле Metro для доступа к облаку Live. Выполните указанные на сайте действия, чтобы зарегистрировать свое приложение для использования Live Connect.

После настройки приложения на использование Live Connect потребуется добавить ссылку на Live SDK. Пакет Live SDK доступен для разработки на языках C#, JavaScript и VB. Его можно добавить в проект, щелкнув правой кнопкой мыши элемент «Проект» и выбрав пункт Добавить ссылку, SDK расширения и элемент в списке, а затем выбрав запись для пакета Live SDK, как указано ниже:

В приложении JavaScript необходимо просто добавить следующую ссылку скрипта на Default.html:

     <script src="ms-wwa:///LiveSDKHTML.5.0/js/wl.js" 
></script>

В C# для использования пакета Live SDK в коде необходимо добавить следующую ссылку:

  using Microsoft.Live;

В VB необходимо использовать только указанную ниже инструкцию импорта:

  Imports Microsoft.Live

Это хороший пример того, как мы обеспечиваем поддержку программирования на ваших любимых языках при разработке приложений в стиле Metro для Windows
8.

Использование Windows Live ID в приложении в стиле Metro

Чтобы воспользоваться преимуществом единого входа в своем приложении, необходимо разместить в нем кнопку входа. Когда пользователь нажимает эту
кнопку единого входа, он автоматически входит в систему, если им уже был выполнен вход на компьютер с использованием Windows Live ID, в противном
случае отображается запрос на выполнение входа. После этого у пользователя запрашивается согласие на то, чтобы ваше приложение осуществило доступ к
данным пользователя, таким как фотографии SkyDrive. Этот рабочий процесс обрабатывается автоматически — вам всего лишь нужно добавить кнопку входа.
Обратите внимание на то, что ваши клиенты все равно подтверждают единый вход в приложение, то есть для них автоматический вход не используется, что
является важной особенностью.

Ниже приведен пример HTML-кода для кнопки входа (обратите внимание на то, что это просто элемент DIV, который требуется настраивать).

  <div id="signinbutton" style="width: 251px; margin-left: auto; margin-top: 
40%; height: 64px; top: 0px;"></div>

После добавления кнопки входа на страницу необходимо обеспечить ее обработку, так как пример HTML-кода служил просто для выделения места под кнопку
на странице. Кроме того, нужно настроить эту кнопку входа в соответствии с необходимыми приложению областями. Область определяет, к чему будет
иметь доступ приложение и на что дает согласие пользователь. Для доступа к данным SkyDrive вашему приложению потребуются две следующие области:

  • wl.signin — эта область позволяет использовать автоматический вход в приложение.
  • wl.skydrive — эта область предоставляет доступ только для чтения к альбомам и фотографиям SkyDrive пользователя (обратите
    внимание: если вы планируете отправлять содержимое в SkyDrive, то ваше приложение должно использовать область wl.skydrive_update).

Это образец кода JavaScript для инициализации, в котором предполагается, что вы уже создали на странице кнопку входа с идентификатором
signinbutton:

 function init() {
        WL.init();

        WL.ui({
         
   name: "signin",
            element: "signinbutton",
            
scope: ["wl.signin", "wl.skydrive"],
        });
    }

А это образец кода JavaScript для обработки входа:

 WL.Event.subscribe("auth.login", onLoginComplete);

    function onLoginComplete() {
        var session = WL.getSession();
        if (!session.error) {
            signedInUser();
        }
    }

Когда пользователь нажимает кнопку входа, у него запрашивается разрешение на доступ приложения к данным пользователя. Как было указано ранее, если
пользователь выполнил вход на свой компьютер с помощью Windows Live ID, то активируется функция единого входа, и пользователю не требуется выполнять
вход еще раз. Вместо этого он попадает прямо на этот экран запроса:

Доступ к содержимому SkyDrive из приложения

Когда пользователь предоставил вашему приложению доступ к своим данным, в приложение возвращаются маркеры доступа OAuth 2.0, которые затем могут
использоваться для выполнения вызовов API RESTful в облако Live. Ниже показано, как код для доступа к фотографиям выглядит в JavaScript:

 function downloadPicture(folderId) {

        var path = folderId + "/files"

        // Submit request
        WL.api({ path: path, method: "GET" }, onEnumerateFolderComplete)

    };

Несколькими приведенными выше вызовами приложение может внедрить содержимое SkyDrive в различные объекты, такие как слайды PowerPoint, видеоролики,
электронные таблицы Excel или обычные фотографии, как показано в следующем примере.

Как вы можете видеть, при использовании пакета Live SDK интеграция единого входа и пользовательских данных из SkyDrive в приложение требует всего
нескольких строчек кода. Ваше приложение будет более личным и сможет использовать все преимущества размещения фотографий и документов пользователя в
облаке. Полный исходный код для примера приложения, приведенного в этой статье, можно загрузить здесь.

Дополнительные сведения о применении пакета Live SDK для обеспечения поддержки единого входа в ваших приложениях и об использовании преимуществ
интерфейсов API SkyDrive см. в семинаре Дара Обасанджо (Dare Obasanjo) Дополнение приложения службами Live и в семинаре Стива Гордона (Steve Gordon) Полное руководство по API SkyDrive для разработчиков с конференции
BUILD. Кроме того, для получения дополнительных сведений вы можете посетить сайт https://dev.live.com
и загрузить предварительную
версию Live SDK для разработчиков
. Удачной работы!

Майк Торрес