基于Facebook和Flash平台的应用架构解析(一)
2009-08-24 00:00:00 来源:WEB开发网图2 FBML Facebook应用架构
当用户在Facebook网站上访问你的应用时,浏览器会向Facebook服务器发送一个HTTP请求。
Facebook服务器将请求转给你的服务器,一般来说都是请求一个服务端页面(如PHP、ColdFusion或JSP)。在这种情况下,Session信息将通过POST请求(而iFrame通常是GET请求)中的URL参数传递,这样你的应用服务器就知道此请求来自 Facebook,以及请求的发送用户是谁。
服务端页面执行时,可能会根据需要访问数据库或其他服务器,其中也包括通过REST API向Facebook服务器发出请求。调用REST API时,必须包含认证信息,比如在Facebook上注册应用时获得的API Key、该调用的签名(通过传给Facebook方法的参数、用户请求你的应用时指定的Session的MD5哈希串生成)、应用的密钥和其他信息。
和iFrame应用一样,服务端页面通常都借助一个代码库生成对Facebook的请求和签名。因为所有返回都是通过Facebook代理的,你的应用请求Facebook服务器时,就没必要每次单独调用一个API。
FBML提供了大量 标签,可用于获得用户姓名、图片、创建对话框和小组件等。对于这类要求,你只需要直接返回FBML代码,后面的工作留给Facebook服务器就可以了,它在将页面返回给用户浏览器前,会自动将FBML转换为HTML和JavaScript代码。当然,不是所有功能都有标签支持的,比如要取得朋友的生日信息,还是得从你的服务器向Facebook发送对应的API调用请求。
Facebook服务器向你的服务器返回被请求的数据,格式是XML或JSON。
你的服务器向Facebook服务器返回HTML/JS/FBML页面。
Facebook服务器将HTML/JS页面返回给用户浏览器。在用户和你的应用交互过程中产生的交互行为包括:
如果你的应用包括新的服务端页面请求,重复步骤1-6。
不同于请求新的页面,你应用程序中的JavaScript可通过使用官方提供的JavaScript库直接向Facebook服务器发出请求(同上面iFrame讨论中的7-10步骤)。
提示:虽然在FBML应用中,你也可以向你的应用服务器发出异步请求(同图1的步骤7-10),但这些调用必须位于通过<fb:iFrame> 标签在iFrame里加载的内容中。
阅读英文原文:Understanding the architecture of applications built on the Facebook and Flash Platforms。
更多精彩
赞助商链接