基于Facebook和Flash平台的应用架构解析(二)
2009-09-04 00:00:00 来源:WEB开发网用户通过Facebook站点访问你的应用时,浏览器向Facebook服务器发送HTTP请求。
Facebook服务器向你的服务器发出请求——一般请求的是PHP、JSP或ColdFusion式的服务端页面。在这种情况 下,Session信息通过POST请求(而非iFrame中的GET请求)中的URL参数传递,那么,你的应用服务器就知道该请求来自 Facebook、是哪个用户发出的请求了。
服务端页面执行时,可根据需要访问数据库和其他服务器,当然包括利用REST API访问Facebook服务器。
API调用必须包含认证信息——包括在Facebook上注册应用时获得的API Key、该调用的签名(通过传给Facebook方法的参数、用户请求你的应用时指定的Session的MD5哈希串生成)、应用的密钥和其他信息。
对于非Flash的iFrame和FBML应用来说,服务端页面通常可利用现成的代码库实现对Facebook的访问,以及生成签名。因此对于所有FBML应用而言,用户浏览器的所有请求都是通过Facebook代理的,你的应用在请求Facebook服务器时,就没必要每次单独调用一个API;同时,诸如获得用户姓名、图片、生成对话框等等,都可以利用FBML 标签实现。
Facebook服务器在将页面返回给用户浏览器前,会自动将FBML转换为HTML和JavaScript代码。当然,不是所有功能都有标签支持的,比如要取得朋友的生日信息,还是得从你的服务器向Facebook发送对应的API调用请求。
Facebook服务器将被请求数据返回给你的服务器,格式可为XML或JSON。
你的服务器向Facebook服务器返回包括HTML/JS和FBML内容的页面。
Facebook服务器向用户浏览器返回HTML/JS页面。该页面包括了(用标签<fb:swf>指定)对你的服务器上SWF文件的引用。
用户浏览器向你的服务器请求内嵌在HTML页面中的SWF文件。
你的服务器返回SWF文件。
在用户和你的应用交互过程中,SWF可向Facebook服务器或你的服务器发出异步调用。
SWF中ActionScript代码直接访问Facebook服务器(见步骤9-10),这可利用宿主在Google代码上 官方支持的ActionScript 3.0 Library for Facebook Platform实现。当然,Facebook必须通过跨域策略文件开放了访问权限,且API调用中传送了所需参数。有关这部分的详细问题,前面的 Flash iFrame应用中已有讨论。
若需实现任何服务端处理功能(如在你的服务器上保存某些数据),可在ActionScript代码中通过远程过程调用方法实现(见 步骤11-12)。对于利用Flex构建的Flash平台应用而言,这些方法包括HTTP、Web Service和Flash Remoting请求技术。其中最便捷的方法当属Flash Remoting——它通过开源的二进制Action Message Format (AMF)实现服务器和Flash Player间的数据交换。当然,服务端代码在向客户端返回数据之前,可根据需要访问Facebook服务器(此点未包含在图4中)。
阅读英文原文:Understanding the architecture of applications built on the Facebook and Flash Platforms。
更多精彩
赞助商链接