Open Social2.0 与 Embedded Experiences 特性
OpenSocial 是定义社交网站的应用和访问社交网站的数据的一 个统一的标准:统一的 gadget 应用模型和 gadget 容器;统一的 OpenSocial API 用来访问社交网站的数据。OpenSocial 2.0 的发布为 OpenSocial 带来了若干新的特性。比如说,提供了 Activity Streams 的支持,简化了 gadget 的格式,新 增 OAuth2 支持,增加了对 OpenSearch 支持,以及我们将要提到的嵌入式体验 (Embedded Experiences)。
通俗的 说,Embedded Experiences 就是将一个服务嵌入到另外一个服务中去。这使得用户无需离开当前服务的上下文即可使用另 外一个服务提供的功能和体验。例如,在一个社交网站上上传一个视频地址。那么,这个上传的视频将以视频播放器的形式 出现。用户在不用离开当前站点情况下,就可以如同在视频站点一样操作该视频。再例如,用户在使用邮件客户端的时候, 收到来自某图片分享网站的通知,那么这封邮件里的嵌入式体验将允许用户在邮件中像在图片网站一样,浏览、收藏、品论 、删除和分享图片。
如今已经存在着各式各样的嵌入式体验解决方案。一些社交网站和邮件客户端通过识别内容中 的 url,然后再决定如何渲染这些 url 的内容,以达到嵌入式体验的目的。例如 Twitter 对 Youtube 视频的处理。如果 在 Twitter 中上传一段包含 Youtube 的视频 url 的文字,Twitter 将自动地识别出这个 url 是 Youbute 中的一段视频 ,并且为这个视频提供一个播放器以满足用户播放的需求,但是用户还是无法得到如同在 Youtube 中对该视频的操作体验 ,而只是能够播放视频。Google 的 Google's Contextual gadgets 则更进一步的提供了分析 email 中以任何形式存 在的内容,并将此内容用于 gadget 的能力。
OpenSocial 社区意识到了通过直接使用 gadget 来完成嵌入式体验的 必要性,于是在 OpenSocial 2.0 中,提供出了 Embedded Experiences 这一机制 ( 下文中如果提及 Embedded Experiences 将代表 OpenSocial 中的 Embedded Experiences 机制 )。OpenSocial 为 Embedded Experiences 提供了与 上文中提到的那些嵌入式体验解决方案截然不同的方式。它并不依赖于内容识别器去识别出需要提供嵌入式体验的内容,也 不用为嵌入式内容提供渲染方案,而是将这些职责交给内容提供方来完成。这一切都将可以通过 opensocial 的 gadget 的 来实现,于是就大大简化了目标服务 ( 社交网站、邮件客户端等 ) 的工作。目标服务将无需去完成一些类似安装内容识别 器这样的繁琐工作。这种做法是对 Embedded Experiences 的一次重大改进,它的特性决定了它有如下优点:
服务的完整性:嵌入式内容将可以轻松获得来自内容提供方提供的最为完整的服务,将以完全符合内容服务使用方式的 形态被渲染在目标服务中。
安全性:只有通过用户 approve 后的 gadget 才会以嵌入式服务的形式被渲染。因此也降低了在邮件等目标服务中执行 一段的不可信任的脚本的可能。同时 OpenSocial 2.0 支持了 OAuth 2.0,可以通过 OAuth 去访问内容主机上的服务 ( 关 于安全的问题这里不多做阐述 )。
面向用户关注:用户可以选择性的 approve gadget,因此目标服务中的内容只会将用户关注的这些内容渲染为嵌入式体 验。而用户不感兴趣的内容将只会以比如简单的 html 被渲染。
灵活性:目标服务将不用关心嵌入式体验服务的更新,因为服务的方式将不再是目标服务来提供,嵌入式服务的更新只 须要内容服务更新相应的 gadget 就可以实现。并且更新的变化可以轻松的体现在过期的内容 ( 比如之前已经发出的邮件 ) 中。而且用户也可以灵活的在不同的使用环境中选择是否渲染嵌入式内容。
Embedded Experiences 的数据模型
OpenSocial 2.0 规范中为 Embedded Experiences 定义了数据模型,包含了 以下部分:
url:该属性用于指定一个 web 页面作为 Embedded Experiences 的渲染方式。
gadget:该属性用于指定一个 gadget 作为 Embedded Experiences 的渲染方式。
context:该属性为 Embedded Experiences 的内容。
previewImage( 可选 ):该属性为 Embedded Experiences 的预览图片。