标签:
本文档介绍了人人网开放平台技术架构的设计细节和接口定义,是一个大而全的文档,涵盖了人人网开放平台对外提供的所有接口。如果你想了解人人网开放平台的整体架构和原理,或者想查阅某个接口参数,那么你一定可以在这里找到答案。
人人网开放平台的技术架构,正处于巨大的变革之中,正向着越来越标准化和通用化的方向发展。但是,为了保证兼容和过渡,我们将在比较长的一段时间之内仍然按照旧的平台架构提供之前的功能。将功能从旧的平台架构向新的人人网开放平台技术架构进行迁移将持续进行,这需要平台方和第三方共同努力。为了描述清楚,在文档中涉及到一些新老接口的过渡情况,将会详细标明。
新的人人网开放平台技术架构遵循一个清晰的分层模型,架构图如下所示:
在上图所示的分层架构中,人人网开放平台提供了不同层次的功能。图中红色部分表示目前还没有提供的功能模块,需要未来由平台或开源社区来提供;黄色部分表示在旧的平台架构中已经提供但正在往新的架构中迁移的功能模块;其它颜色的是功能比较完整的功能模块。
从图中可以看出,人人网开放平台大概分为三个层次,共同为最上层的各种形式的第三方应用程序提供服务:
第三方应用程序可以使用任意三个层次提供的API进行开发。
那么,我们为什么要推出这样的分层架构呢?因为它具有如下好处:
下面通过归类的方式详细介绍人人网开放平台技术架构的所有细节。
第三方如果想调用人人网提供的Rest API,则必须首先经过用户授权。Auth API就是用来完成用户授权的。
目前,人人网开放平台进行用户授权遵循业界最新的标准OAuth 2.0,详情请参考:用户验证与授权。
Rest API是人人网开放平台提供的一种使用HTTP协议来调用的API,需要在完成用户授权后才能调用。
各个Rest API的接口参数定义详见Rest API。
Widget API是人人网开放平台提供的一种在用户控制下访问用户资源的一种API,由于是在用户控制下完成的,所以无需进行用户授权(但用户身份验证还是必需的)。这种API能够支持各种不同的运行环境,如web、mobile、桌面编程环境等等。
一个Widget可有拥有多种视图,每一种视图能够适应某个特定的运行环境。Widget可以在web浏览器中运行,或嵌入到一个原生程序(Native Application)中,或嵌入到一个对话框中。
根据通常的用途,Widget大致可以分为两类:Dialog和Plug-in。
Dialog通常被用于弹出窗口或弹出对话框。一般在默认情况下,一个Dialog不会在第三方应用中显示出来,而是由某个用户动作触发弹出。
通常Dialog具有比较简单的用户界面。
下面是Dialog列表:
Feed Dialog提供的功能是通过弹框等方式在用户确认后发送新鲜事到人人网。可以支持web/wap网页(web/wap网站以及站内应用)、移动客户端、桌面客户端等多种运行环境。
新版Feed Dialog的优点:
Request Dialog提供的功能是通过弹框等方式在用户确认后给好友发送应用邀请或礼物,支持“一对一”或“一对多”两种方式。可以支持web/wap网页(web/wap网站以及站内应用)、移动客户端、桌面客户端等多种运行环境。
Plug-in通常在第三方应用中被用做一个嵌入的模块或Box,默认显示。
通常Plug-in具有比较复杂的用户界面,功能也比较丰富。
注意:上面描述的Dialog和Plug-in之间的区别并不是严格的技术上的区别,而只是用法上的区别。实际在技术上,两者的用法可以互换。例如,通过用户的触发再弹出一个窗口来显示Plug-in也是可行的。
下面是Plug-in列表:
用户在第三方应用看到喜欢的内容可以点击“喜欢按钮”,同时将内容发送到人人网新鲜事。如果内容有对应公共主页,用户同时可以成为该公共主页的粉丝,接受到来自该主页的最新动态。
技术文档详见like,一个web配置和预览界面:web喜欢按钮的配置。
Like Box是一个为公共主页拥有者提供的社会化插件。公共主页拥有者可直接将此box嵌入自己的应用(目前只支持web网站和web站内应用),用户可在第三方网站上点击喜欢成为该主页粉丝,并浏览该主页新鲜事及现有的关注者。
在新版Like Box上线之前,可以使用旧的粉丝小部件:技术文档参见粉丝小部件,配置和预览界面参见粉丝小部件的配置。
新版Like Box的优点:
Comments Box是一个社会化插件,便于人人网用户在第三方应用(目前只支持web网站和web站内应用)中发表评论。 相关文档地址。
可以让用户在第三方应用(目前只支持web网站和web站内应用)中针对某一热点话题进行实时讨论,用户的评论以人人网状态的形式发送到人人网主页。
技术文档:xn:live-stream;配置和预览界面:Live Stream Box配置
在第三方应用(目前只支持web网站和web站内应用)中显示好友头像列表的社会化插件,与好友进行交互,增强社交属性。
技术文档:xn:friendpile;配置和预览界面:好友派配置
Iframe callback用于第三方开发Web站内应用,在Canvas页(即http://apps.renren.com/yourapp)与人人网深入整合。
Iframe类型的应用的接入方式,是在Canvas页(即http://apps.renren.com/yourapp)通过iframe嵌入一个第三方的页面,在iframe的src中传递一些xn_sig_xxx参数给第三方服务器。第三方服务器解析和验证这些参数,取得用户的标识(如uid, session key等),然后用session key去调用Rest API,获取用户更多信息,从而产生一个动态页面。
xn_sig_xxx参数的相关信息(包括如何校验这些参数)请参见关于xn_sig参数。
XNML callback用于第三方开发Web站内应用或Wap站内应用,在Canvas页(即http://apps.renren.com/yourapp 或 http://mapps.renren.com/yourapp)与人人网深入整合。
XNML类型的应用的接入方式,是当用户访问在Canvas页(即http://apps.renren.com/yourapp 或 http://mapps.renren.com/yourapp)时,由平台服务器代理用户的请求,平台服务器向第三方服务器发送POST请求。在这个POST请求中,传递一些xn_sig_xxx参数给第三方服务器。第三方服务器解析和验证这些参数,取得用户的标识(如uid, session key等),然后用session key去调用Rest API,获取用户更多信息,从而产生一个动态页面。由于安全原因,这个动态页面不能是普通的HTML页面,只能使用由人人网开放平台定义的XNML代码来组装页面,返回给平台服务器。最后平台服务器将XNML代码解析渲染成普通的HTML代码,返回给浏览器。
xn_sig_xxx参数的相关信息(包括如何校验这些参数)请参见关于xn_sig参数。
在第三方服务器返回平台服务器响应时,可以分别使用下列三个技术来书写标签、CSS和JavaScript:
Real-Time API是一种高级的API形式,使用方式是:第三方应用可以订阅用户在人人网的一些信息变化(如收到提醒、好友关系变化、个人信息变化等),由人人网服务器在订阅信息发生变化时主动将消息推送给第三方,从而可以完成一些实时消息提醒之类的高级功能。详见Real time api
SDK一部分由人人网开放平台官方提供,一部分由开源社区提供。以开源代码的方法是进行维护。
目前提供的SDK请参阅SDK。
新的经过清晰分层的人人网开放平台技术架构,有利于促进开放平台领域的社会化分工。
在之前,第三方应用开发者所使用的所有API,大部分都由开放平台官方提供,包括各种开发SDK。而经过架构分层,底层的Core Service Layer提供的API被清晰地定义,就可以将底层接口的开发和SDK的开发明确的区分开来。这样带来的好处是:开放平台集中精力提供底层的接口,致力于增加接口种类,而上层的SDK封装工作可以由第三方开发者自己或开源社区来进行。
为了促进开放平台领域的发展,人人网开放平台倡导开源精神,集中开源社区的力量,对有利于第三方开发者进行开发或接入的代码进行开源管理。这这些开源的代码一部分由人人网开放平台官方开发出初始版本,然后发布为开源的license,由开源社区来管理;另一部分直接由开源社区来贡献。
欢迎加入人人网开源项目!
标签:
原文地址:http://www.cnblogs.com/duanxz/p/4384281.html