在Canvas Page中,用户创建的应用需要使用facebook支持的标签来展示应用的相关内容。Facebook目前支持的两种标记语言为FBML和IFrame。其中FBML为facebook平台提供的一种专门用于开发facebook canvas page的标记语言,由facebook官方开发。Iframe是标准Html中支持的标记语言格式。在canvas page中使用iframe和在一般html页面中使用iframe用法相同。本文主要讲述一下fbml和iframe的工作原理。
IFrame工作原理
Iframe是一种灵活的标记语言,当用户通过canvas page访问(http://apps.facebook.com/yourapp)iframe的时候,facebook会向该页面返回一系列的参数。这些参数中包含了用户的授权信息,当iframe获取到这些参数后,就可以正常访问facebook上的用户数据了。
上图为iframe在facebook上的工作原理图。当用户访问你的应用时,facebook会验证该应用是否得到当前登录用户的授权,若该应用已经得到用户的授权,facebook向canvas callback url返回session key,应用接收到facebook的session key后就可以于facebook进行交互了。
在使用iframe时,facebook只充当一个权限验证的角色,当用户访问相关的iframe页面是,实际上是与部署了应用的服务器进行交互的,如果交互的内容需要用到facebook的信息时,应用服务器会调用facebook的相关接口来获取相关的数据内容。也就是说在canvas page中使用iframe时,用户的所有交互都是直接与应用服务器进行交互的,而不是直接与facebook进行交互,而与facebook的交互则是由应用服务器来完成的。
FBML工作原理
使用facebook开发canvas页面,和使用html开发一个属于自己的系统一样方便。开发者只需要在自己的页面中嵌入fbml就可以直接访问facebook上的相关信息。下面是FBML的工作原理图。
从图中可以了解,当用户登陆后,只要用户授权了改应用,应用服务器就只和facebook进行交互,由facebook统一将返回的结果传递给用户浏览器。这里的facebook就相当一个容器,将应用服务器进行封装,用户使用该应用时的所有请求都是通过facebook来完成的。而不需要用户与应用服务器进行交互。
总结:
上面简单的介绍了facebook的canvas的两种不同的标记语言的工作原理。最后总结一下他们各自的优缺点:
<1>iframe的优点:
(1)可以使用普通html标记,编辑iframe和编辑一般的html页面类似
(2)可以使用localhost进行调试,这点不同于FBML,FBML的调试必须要通过一个拥有独立IP的服务器,并且这台服务器可以正常的访问facebook。
(3)在可以使用css,JavaScript。
<2>FBML的优点:
(1)可以提供比较人性化的url访问路径。
(2)验证机制比较简单,只需要一个简单的标签即可。
(3)方便快速的访问facebook上的多种标签。
(4)加载速度比iframe要快。
Iframe和FBMl比较
Iframe的使用和普通的html frame用法相同,因此可以使开发者快速创建自己的应用,开发者可以使用localhost进行调试,而不需要专门部署自己的服务器。但访问速度不如FBML。如果需要访问facebook中的相关数据,还需要用到相关js库的支持。FBML的使用学习起来会有些难度,但是如果熟悉struts或者jsp的自定义标签的用法,FBML用起来也很方便。
FBML是facebook自身提供的标签库,当用户访问FBML的页面时,和访问一般的facebook相同,而不需要应用服务器做中转,因此访问速度会比较慢,FBML唯一的缺点就是测试时需要使用拥有独立IP的服务器。