OpenSocial — это общедоступная спецификация, описывающая набор общих интерфейсов прикладного программирования (API) для веб-приложений . Первоначально разработанный для приложений социальных сетей , он был разработан совместно Google , MySpace и другими социальными сетями. С тех пор она превратилась в среду выполнения , которая позволяет сторонним компонентам, независимо от их уровня доверия, работать внутри существующего веб-приложения.
OpenSocial Foundation интегрировал или поддержал различные технологии Open Web , включая OAuth и OAuth 2.0, потоки активности и переносимые контакты . С момента своего создания 1 ноября 2007 года [1] приложения, реализующие API OpenSocial, могут взаимодействовать с любой системой социальных сетей, которая их поддерживает.
OpenSocial изначально принял универсальный подход к разработке. По мере развития платформы и расширения базы пользователей она была модульной, что позволило разработчикам включать только необходимые компоненты платформы. [2] Orkut , клиент Google, первым поддержал OpenSocial. [3]
16 декабря 2014 года Консорциум Всемирной паутины (W3C) объявил, что OpenSocial Foundation переведет свою работу по стандартизации на W3C Social Web Activity. [4] Это эффективно интегрировало OpenSocial в рабочую группу W3C по социальным сетям и группу социальных интересов, тем самым растворив OpenSocial как отдельную организацию.
OpenSocial, построенный на HTML и JavaScript , а также на платформе Google Gadgets , включает в себя множество API-интерфейсов, которые позволяют социальным программным приложениям получать доступ к данным и основным функциям участвующих социальных сетей . [6] Каждый API отвечает за свой аспект. [7] Спецификация также включает API для взаимодействия с произвольными сторонними сервисами в сети, используя прокси- систему и OAuth для обеспечения безопасности.
В версии 0.9 OpenSocial включила поддержку языка на основе тегов . [8] , известный как OSML. Этот язык облегчает доступ на основе тегов к данным из API OpenSocial, что ранее требовало асинхронного запроса на стороне клиента. Кроме того, была создана комплексная система шаблонов тегов и принят язык выражений, основанный на языке выражений Java .
Начиная с версии 2.0, OpenSocial начал поддерживать формат потоков активности . [8]
OpenSocial обычно описывается как более открытая кроссплатформенная альтернатива платформе Facebook , собственной службе популярной социальной сети Facebook . [9]
Ходили слухи, что OpenSocial является частью более крупной социальной сети Google под кодовым названием «Мака-Мака» [10] , что на гавайском языке означает «близкий друг, с которым можно свободно получать и отдавать» . [11]
Проект с открытым исходным кодом Shindig был запущен в декабре 2007 года для обеспечения эталонной реализации стандартов OpenSocial. Он пользуется поддержкой Google, Ning и других компаний, разрабатывающих программное обеспечение, связанное с OpenSocial. Парсер Myspace OpenSocial был выпущен как проект Negroni в январе 2011 года и представляет собой реализацию OpenSocial на основе C# .
Apache Rave — это легкая расширяемая платформа на основе открытых стандартов для использования, интеграции и размещения функций, технологий и услуг, связанных с OpenSocial и W3C Widget. Он также обеспечит широкие возможности контекстно-зависимой персонализации, совместной работы и интеграции контента, а также высококачественную готовую установку, а также будет легко интегрироваться в другие платформы и решения. [12]
И Shindig, и Apache Rave больше не находятся в разработке и сняты с производства Apache Foundation.
Корпоративные веб-сайты, такие как Friendster , hi5 , LinkedIn , MySpace , Orkut и Salesforce.com , являются основными пользователями OpenSocial. [13]
Friendster развернул API версии 0.7 спецификации OpenSocial, что упрощает запуск существующих приложений OpenSocial, использующих версию 0.7, на Friendster и охват более 75 миллионов пользователей Friendster. Friendster также планирует в ближайшие месяцы поддерживать дополнительные API OpenSocial, включая новые API 0.8. [14]
hi5 использует поддержку Widgetbox для OpenSocial, чтобы получить доступ к выбору веб-виджетов, предоставляемых Widgetbox. [15]
Платформа разработчиков Myspace (MDP) основана на API OpenSocial. Он поддерживает социальные сети для разработки социальных и интерактивных виджетов. Это можно рассматривать как ответ платформе разработчиков Facebook. [16]
Первоначальная поддержка OpenSocial обнаружила уязвимости в безопасности: разработчик-любитель, по его словам, демонстрировал эксплойты гаджета RockYou на Plaxo и социальных сетей Ning с использованием гаджета iLike . [17] Как сообщил TechCrunch 5 ноября 2007 г., OpenSocial был быстро взломан. Общее время взлома iLike на Ning на основе OpenSocial составило всего 20 минут, при этом злоумышленник смог добавлять и удалять песни в плейлисте пользователя, а также получать доступ к информации о друзьях пользователя. [18]
Хезель и Яконо показали, что «спецификация OpenSocial далека от полной в отношении безопасности». [19] Они обсудили различные последствия безопасности в контексте OpenSocial. Они представили возможные уязвимости в системах целостности и аутентификации сообщений, конфиденциальности сообщений, а также управления идентификацией и контроля доступа.
Открытая с большой помпой в новостях, OpenSocial поначалу работала не очень хорошо; он работал только на Orkut , принадлежащем Google , и только с ограниченным количеством гаджетов, возвращая ошибки для других гаджетов. Другие сети все еще рассматривают возможность внедрения этой структуры.
6 декабря TechCrunch опубликовал отчет основателя MediaPops Расса Уитмена, который сказал: «Хотя поначалу мы были очень взволнованы, мы на собственном горьком опыте поняли, насколько на самом деле ограничен выпуск». Расс добавил, что «основные функциональные компоненты» отсутствуют и что фраза «напиши один раз, распространяй широко» не соответствует действительности. [20]
Легенда: Снято с производства Текущий
Изменения в REST API были внесены для решения нескольких проблем, которые потребовали внесения изменений в спецификации OpenSocial, чтобы его мог использовать Open Mobile Alliance . [21]
Были добавлены общие контейнеры, предоставляющие «набор общих сервисов, которые разработчики контейнеров могут использовать для таких функций, как обратные вызовы событий жизненного цикла гаджетов в браузере, встроенные возможности, обработчики выбора и обработчики действий». [22] Новый API метаданных дает приложениям OpenSocial возможность адаптироваться к возможностям различных контейнеров OpenSocial. Расширение аутентификации WAP устарело.
Поддержка OAuth 2.0 была завершена в этой версии OpenSocial. [23]
OpenSocial представила поддержку потоков активности . JSON стал предпочтительным форматом данных, а поддержка ATOM была прекращена. Формат гаджета был упрощен, чтобы дать возможность определить библиотеку шаблонов в спецификации гаджета. [24] Хотя это еще не доработано, основа для поддержки OAuth 2.0 была заложена.
В ответ на потребности корпоративной среды OpenSocial добавила поддержку расширенных сценариев коллажей. Это позволило гаджетам «безопасно отправлять друг другу сообщения в слабосвязанной форме». [25] Эта новая функция получила название «Связь между гаджетами».
OpenSocial признала, что выбранный ею подход «один размер подходит всем» не будет работать для различных типов веб-сайтов, принявших эту платформу. Чтобы решить эту проблему, OpenSocial разделен на четыре модуля соответствия: Core API Server, Core Gadget Server, Social API Server и Social Gadget Server. [2] Это позволило разработчику выбирать модули, которые он хотел использовать при использовании других сервисов, не являющихся частью OpenSocial. Расширения были введены, чтобы позволить разработчикам расширять контейнеры OpenSocial.
В ответ на отзывы и наблюдения за тем, как разработчики используют API, эта версия была сосредоточена на том, чтобы сделать «разработку, тестирование и развертывание приложений проще и быстрее, одновременно сокращая время обучения для новых разработчиков приложений». [26] API OpenSocial Javascript был оптимизирован, чтобы сделать его облегченным, сохранив при этом мощь старого API Javascript. Прокси-контент был введен для того, чтобы разработчикам не приходилось обходить предыдущие ограничения AJAX. Прокси-контент позволяет извлекать контент из URL-адреса и отображать его в теге <Content>. В ответ на распространенное использование отправки данных на удаленный сервер сразу после запроса в OpenSocial 0.9.0 была введена конвейерная обработка данных. Конвейерная обработка данных позволяет разработчику указать социальные данные, которые потребуются приложению, и немедленно сделать эти данные доступными. Шаблоны OpenSocial были представлены для создания пользовательского интерфейса, управляемого данными, с разделением разметки и программной логики. Язык разметки OpenSocial (OSML Markup) — это новый набор стандартизированных тегов для выполнения общих задач или безопасного выполнения обычно небезопасных операций внутри шаблонов. OSML расширяем. Разработчики могут создать библиотеку собственных тегов.
В этом второстепенном выпуске основное внимание уделялось межсерверным протоколам, поскольку «схема Person была согласована с проектом Portable Contacts, и было добавлено дополнительное предложение RPC». [27] Протокол JSON-RPC был добавлен для повышения функциональности сервера между серверами. Протокол RESTful, представленный в версии 0.8.0, подвергся серьезной переработке: было добавлено, изменено и удалено несколько полей.
OpenSocial изменила спецификации контейнеров для реализации RESTful API . Многие изменения API OpenSocial Javascript сделали эту версию несовместимой с предыдущими версиями. Существующие гаджеты продолжали использовать версию 0.7.0. После обновления гаджет будет использовать версию 0.8.0. Безопасность улучшилась благодаря внедрению авторизации OAuth и очистки HTML, а также событий жизненного цикла контейнера. [28] Данные персистентности хранились в формате JSON .
Выпущен как «первая версия, которая может полностью поддерживать многофункциональные социальные приложения». [29] Добавлено несколько стандартных полей для информации профиля, возможность отправить сообщение для установки приложения, шаблон активности для управления уведомлениями об активности о том, что делают пользователи, а также упрощенный API постоянства для использования каналов вместо глобальных и экземпляров. -область данных приложения. Еще одно важное объявление поступило от Apache Shindig. Apache Shindig сделал гаджеты открытыми. В связи с этим объявлением в OpenSocial 0.7.0 представлены спецификации гаджетов, позволяющие разработчикам определять свои гаджеты с помощью API гаджетов.
В версии 0.6.0 большое внимание уделялось безопасности. Контроль разрешений был ужесточен, чтобы гаджет не возвращал информацию, если у него нет на это полномочий. Были добавлены новые классы, такие как класс Environment, позволяющий гаджету реагировать по-разному в зависимости от окружающей среды, и класс Surface для поддержки навигации с одной поверхности на другую. Класс Activity был упрощен в соответствии с потребностями разработчиков, а класс Stream устарел. [30]
Google объявила о запуске OpenSocial с предварительной версией версии 0.5.0. Хотя этот API был нестабильным, он представил на платформе OpenSocial «различные XML DTD, интерфейсы Javascript и другие структуры данных» [31] .