Публикация приложений. Расширенное взаимодействие с облачными интерфейсами
Открытые стандарты
Использование открытых стандартов позволит вам тратить меньше времени на изучение новых понятий и больше - на написание кода и другие продуктивные действия. Вот почему интерфейсы Live Connect построены на множестве открытых стандартов, которые вы, возможно, уже применяете в создаваемых вами приложениях. А если вы впервые добавляете в приложение социальный компонент, вероятно, что код, который вы пишете с использованием Live Connect, можно также использовать с интерфейсами API других служб.
Перед началом написания кода вам следует ознакомиться с несколькими открытыми стандартами, важными для работы с Live Connect: OAuth 2.0, Representational State Transfer (REST), JSON и XMPP.
- OAuth 2.0 - это новейшая версия протокола OAuth, открытого стандарта проверки подлинности учетных данных пользователей. В Live Connect, наряду с другими интерфейсами API социальных сетей, в качестве стандарта проверки подлинности принят OAuth 2.0. В своей основе OAuth 2.0 позволяет проверять подлинность пользователей с помощью веб-служб авторизации Live Connect, не разглашая приложениям конфиденциальные входные учетные данные. Несмотря на то, что спецификация OAuth 2.0 содержит сведения о различных сценариях проверки подлинности (так называемых потоках), Live Connect фокусируется на трех из них:
- неявный поток предоставления для проверки подлинности в режиме клиент-сервер;
- поток кода авторизации для проверки подлинности в режиме сервер-сервер;
- поток управления входом - специфическая для Live Connect реализация потока неявного предоставления прав, позволяющая использовать наши интерфейсы API для запуска процесса проверки подлинности из ваших приложений.
- REST - это тип архитектуры, который стал популярным в веб-службах. Использование нами REST облегчает запрос пользовательской информации через интерфейсы Live Connect API. Эта реализация REST поддерживает стандартные методы HTTP, такие как GET, PUT, POST и DELETE. Также мы включили несколько сокращений для дальнейшего упрощения реализации определенных запросов. Например, для получения сведений о пользователе, выполнившем вход, вы можете использовать в запросе сокращение me.
- JSON - распространенное средство представления информации в веб-службах. Live Connect обменивается пользовательскими данными в формате JSON. Например, когда ваше предложение запрашивает дату рождения пользователя, эти сведения возвращаются в объекте response, который содержит структуры birth_day, birth_month и birth_year.
- XMPP - это открытый стандарт для обмена данными в режиме реального времени. Он может использоваться вашими приложениями для взаимодействия с пользователем Messenger и его контактами.
Для того чтобы служба Live Connect распознала приложение, необходимо задать для него несколько настроек в зависимости от типа приложения. Для приложений для Windows Store эти настройки содержатся в информационной панели магазина Windows. Для всех остальных типов приложения эти настройки содержатся на сайте управления приложениями Live Connect. На любой из сайтов следует войти с учетной записью Майкрософт и выполнить приведенные на экране указания. Для получения дополнительных сведений см. раздел Настройка вашего приложения.
Получение разрешения пользователя
После получения идентификатора клиента необходимо решить, какая пользовательская информация требуется информационной системе. Live Connect организует пользовательскую информацию по категориям - областями. Например, если приложение должно работать со списком контактов пользователя Hotmail, оно будет запрашивать область wl.basic с помощью Live Connect. Live Connect предлагает пользователю выполнить вход в Hotmail (или другую службу, совместимую с Live Connect, в зависимости от области, запрашиваемой вашим приложением). В процессе входа пользователя также отображается страница с запросом разрешения на доступ приложения к запрошенным частям его информации. Когда пользователь предоставит разрешение или согласие, Live Connect выдаст приложению уникальную строку символов - маркер доступа. Маркер доступа используется приложением для получения запрошенной пользовательской информации из службы, совместимой с Live Connect (в данном случае Hotmail). Маркер доступа уникальным образом представляет сочетание идентификатора клиента, конкретного пользователя, выполнившего вход, а также набора областей, на которые требуются пользователю. Маркер доступа действителен только в течение определенного периода времени.
Рекомендуется придерживаться минимального количества областей в запросе, поскольку это улучшит процесс взаимодействия с пользователем. Возможно создать приложение, которое просто запрашивает доступ к любой возможной информации пользователя, которая когда-либо может ему понадобиться. Однако вероятно, что пользователи не решатся предоставить приложению доступ, когда увидят, к какому большому числу областей он требуется. Лучшим решением будет запросить согласие только на несколько ключевых областей - тех, которые непосредственно соответствуют контексту вашего приложения. Например, если создается приложение для обмена фотографиями, имеет смысл запросить доступ к области wl.photos, wl.contacts_photos или wl.skydrive. Впоследствии, если пользователь захочет использовать ту часть приложения, которой требуется другая область - доступ к календарю Hotmail, например - запросить в соответствующий момент согласие пользователя на область wl.calendars или wl.calendars_update. Если у пользователя запрашивается дополнительное согласие, то приложение должно также запросить новый маркер доступа, который затем должен использоваться приложением вместо старого.
Вход пользователей
Персонализированная среда взаимодействия с пользователями повышает качетсво информационной системы: повышается лояльность пользователей и степень удовлетворения от работы с приложением.
Live Connect включает несколько способов добавления в приложение функции входа на языках JavaScript, C#, Objective-C, Java и REST. Вкратце опишем их.
Чтобы запустить процесс входа, при написании приложения для Windows Store или клиентской веб-страницы на JavaScript можно отобразить элемент управления Live Connect для входа. Также для запуска процесса входа можно использовать существующий элемент HTML, например кнопку.
Добавить элемент управления для входа можно с помощью метода WL.ui (JavaScript). Пример исходного кода:
WL.Event.subscribe("auth.login", onLogin); WL.init({ client_id: APP_CLIENT_ID, redirect_uri: REDIRECT_URL, scope: "wl.signin", response_type: "token" }); WL.ui({ name: "signin", element: "signin" }); function onLogin() { document.getElementById("infoLabel").innerText = "Signed in."; }
Чтобы подключить элемент управления для входа к элементу HTML на веб-странице, можно просто добавить тег <div> с атрибутом id, имеющим в данном случае значение "signin".
Чтобы запустить процесс входа из элемента HTML, например кнопки, упомянутой ранее, следует использовать метод WL.login. Ниже приведен соответствующий код.
function moreScopes_onClick() { WL.login({ scope: ["wl.signin", "wl.basic"] }).then( function (session) { document.getElementById("infoLabel").innerText = "Signed in."; }, function (sessionError) { document.getElementById("infoLabel").innerText = "Error signing in: " + sessionError.error_description; } ); }
Этот подход идеален в ситуациях, когда элемент управления для входа не соответствует потребностям приложения, или когда пользователь должен предоставить приложению специальное согласие на получение дополнительной информации о пользователе (поскольку элемент управления для входа обычно предусматривает только начальный уровень согласия).
Рассмотрим исходный код. Метод WL.Event.subscribe указывает приложению использовать метод обратного вызова onLogin после того, как пользователь завершит процесс входа и даст свое согласие; метод WL.login использует вместо этого встроенные функции. (Обратите внимание, что события auth.login инициируются всякий раз при изменении статуса входа пользователя с "unknown" (неизвестный) или "notConnected" (не подключен) на "connected" (подключен).) Чтобы определить, успешно ли пользователь выполнил вход и предоставил ли согласие на запрошенные области, метод WL.login дает коду команду использовать анонимные методы после .then. Области представляются анонимным методом после .then с параметром session. Область wl.signin позволяет пользователю автоматически входить в службы Live из приложения, если он уже вошел в службы Live. Дополнительная область wl.basic в методе WL.init предоставляет доступ к базовой информации, такой как отображаемое имя пользователя.
После входа пользователя можно использовать область wl.basic, наряду с методом WL.api, чтобы приветствовать пользователя по имени, как показано в следующем примере.
function greetUser_onClick() { WL.login({ scope: "wl.basic" }).then( function (response) { WL.api({ path: "me", method: "GET" }).then( function (response){ document.getElementById("infoArea").innerText = "Hello, " + response.first_name + " " + response.last_name + "!"; }, function (responseFailed){ document.getElementById("infoArea").innerText = "Error calling API: " + responseFailed.error.message; } ); }, function (responseFailed){ document.getElementById("infoArea").innerText = "Error signing in: " + responseFailed.error_description; } ); }
В данном примере метод WL.api использует наше сокращение me для вызова интерфейсов Live Connect API с целью получения информации о вошедшем пользователе. Если метод HTTP GET успешно вызовет интерфейсы API, отобразятся имя и фамилия пользователя, взятые из содержимого объекта response.
SkyDrive: файлы и фотографии
Пользователи хранят на SkyDrive множество документов и мультимедиа. Предоставление пользователям доступа к их документам и мультимедиа из приложения поможет увеличить степень использования приложения и побудить пользователей поделиться им со своими контактами. С помощью интерфейсов Live Connect API в SkyDrive можно выполнять следующие действия:
- Создавать, читать, обновлять и удалять папки и альбомы. (Альбом - это специальный тип папки SkyDrive, предназначенный для повышения удобства работы с фото- и видеофайлами.)
- Загружать файлы на сервер и скачивать их оттуда.
- Читать и обновлять свойства файла.
- Получить внедренную ссылку, ссылку только для чтения или ссылку для чтения и записи в папку или файл.
- Перемещать и копировать папки и файлы.
- Читать теги, добавляемые пользователями к фотографиям и видеозаписям.
- Читать комментарии, добавляемые пользователями к папкам, файлам, альбомам, фотографиям, видеозаписям и звуковым файлам.
Краткие итоги
В лекции представлены основные положения об основных способах взаимодействия информационных систем с облачными решениями. Показаны способы взаимодействия с такими сервисами как SkyDrive, HotMail. Рассмотрена технология идентификации LiveID способы использования данной технологии в информационных системах.
Вопросы
- Облачные технологии фирмы Microsoft?
- Какие настройки используются для идентификации сервисом LiveID пользовательских приложений?
- Какие методы используются при разработке приложений для создания персонализированного входа в LiveID?
- Какими способами повышается степень использования приложения?