An external flash facebook website application(翻译)

参考地址:

http://www.adobe.com/devnet/facebook/articles/facebook_architecture_overview_06.html

图5展示了基于Facebook用户的外部flash站点的结构。与之前最大的不同是Facebook server不在代理任何浏览器的请求。开发者需在client端使用Facebook API或Facebook Connect处理用户登录。如果使用Facebook API登录,用户将被定向到Facebook站点,在Facebook登录后返回到app站点上。如果使用Facebook Connect,用户将不需要到Facebook站点上去登录。


图5,外部flash站点结构

1. 用户在app站点请求app;浏览器向app server发送HTTP request请求HTML页面或server page。

2. app server返回包含了swf文件引用的HTML/JS页面。如果使用Facebook Connect,HTML页面中会包含一些Facebook Connect初始化所需的JavaScript代码。

3. 用户请求swf文件

4. app server返回swf文件

5. AS代码向Facebook发出异步的请求,一次一个或一组请求。第一次请求需要从Facebook server的得到authorization token,在用户通过Facebook Connect登录之后, ActionScript 3.0 Lib会生成一个引用标识,以便在后来的对Facebook api引用中使用。更多信息参考前面讨论过的Flash iFrame application

6. Facebook server在app server请求时返回XML或JSON格式的数据, app处理数据。

7. 如果需要存储数据或与后台做其他交互,在AS代码中使用RPC(HTTP, web service或Flash Remoting requests)。速度最快并且代价也最小的方式是Flash Remoting requests, 它使用 Action Message Format (AMF)二进制格式在server和Flash之间传输数据。

8. 如果app server需要和Facebook继续交互,继续交互。

9. app server继续处理Facebook返回的数据。

10. app server向Flash内容返回数据。图5使用了Flash Remoting及AMF交换数据,还可使用web services及SOAP, HTTP services和text或XML。

Advertisements

flash fbml facebook application(翻译)

参考地址:

http://www.adobe.com/devnet/facebook/articles/facebook_architecture_overview_05.html#swf_fbml

除了在iframe中嵌入Flash app外,我们还可以使用FBML的<fb:swf>标签将Flash包含在FBML app中。使用FBML app的好处就是我们更简单的构建app,只需要向Facebook server返回FBML(Facebook server会解析FBML标签). 坏处是用于显示和用于逻辑的代码会出现在很多地方,如swf文件,app server page中以及返回给Facebook server的FBML中,这样会使代码很凌乱不好维护。参考Comparing iFrame and FBML Flash Facebook applications 获取更多信息。


图 4. A Flash FBML Facebook application

1. 用户在Facebook上请求app; 浏览器向Facebook server发出请求。

2. Facebook server向app server发出请求, 请求一般由app server page处理(PHP,ColdFusion或JSP).Session信息会随着POST URL(与iframe的GET URL相反)发送给app server。

3. app server page引用数据库或其他需要的服务, 包括Facebook的REST API. 
和iframe一样server-side页面使用library引用Facebook API以及生成引用标识。因为是通过Facebook server代理,所以在返回用户浏览器之前,和iframe app的过程不同(先由iframe app向Facebook server发送请求,Facebook server返回给iframe app,再由iframe app返回给浏览器)FBML直接请求Facebook server,然后Facebook server直接返回到浏览器。
FBML中有很多组件,如fb:name可以取得用户姓名,fb:profilepic可以取得头像等等。我们可以在app server中直接返回这些FBML标签,Facebook server会将它们解析成HTML/JS返回给浏览器.但有时我们却不得不自己引用某个api,比如取得好友生日,因为没有有类似功能的FBML标签。

4. Facebook server向app server返回XML或JSON格式的数据。

5. app server向Facebook server返回包含了HTML/JS和FBML标签的页面。

6. Facebook server返回解析之后的HTML/JS页面,其中包括了由<fb:swf>标签指定的swf的引用。

7. 浏览器再次发出请求,请求嵌入的swf文件。

8. app server返回swf文件。

当用户与app交互时,会发生以下事情:

1. 使用ActionScript 3.0 Library直接引用Facebook server API(9-10步)。

2. 如果想存储数据或其他与后台交互的工作,我们可以在AS代码使用RPC调用app server(9,10步)。基于Flex构建的flash平台包含有 HTTP, web service以及Flash Remoting requests。速度最快代价也最小的方式是Flash Remoting,它使用 Action Message Format (AMF)二进制格式在server和Flash之间传输数据。图中没显示的还包括app server直接引用Facebook server API。

fbml facebook application(翻译)

参考地址:

http://www.adobe.com/devnet/facebook/articles/facebook_architecture_overview_03.html

现在我们知道怎么处理iFrame app了,那接着我们看看FBML app是怎么工作的。与iframe中将app作为独立的实体相反,FBML app只是Facebook server返回HTML页面的一部分。Facebookserver代理了app中向app server发出的所有请求。app server除了返回部分HTML/JS页面外还返回FBML标签,Facebook server会将这些FBML标签解析成HTML/JS页面,然后返回给用户浏览器。


图2. FBML app结构

1. 用户在facebook站点上访问app;浏览器向facebook server发送HTTP request。

2. Facebook server向app server发送请求,请求通过会由app server页面处理(PHP,ColdFusion或JSP). Session信息会随着POST URL(与iframe的GET URL相反)发送给app server。

3. app相关的页面会引用数据库或其他需要的服务,包括引用Facebook的REST API。API调用必须包含包括app的api key和引用标识(signature)在内的验证信息,应用标识由发送的参数,当前用户的session key生成的MD5哈希值,app的secret key以及其他信息组成。

和iframe一样server-side页面使用library引用Facebook API以及生成引用标识。因为是通过Facebook server代理,所以在返回用户浏览器之前,和iframe app的过程不同(先由iframe app向Facebook server发送请求,Facebook server返回给iframe app,再由iframe app返回给浏览器)FBML直接请求Facebook server,然后Facebook server直接返回到浏览器。

FBML中有很多组件,如fb:name可以取得用户姓名,fb:profilepic可以取得头像等等。我们可以在app server中直接返回这些FBML标签,Facebook server会将它们解析成HTML/JS返回给浏览器.但有时我们却不得不自己引用某个api,比如取得好友生日,因为没有有类似功能的FBML标签。

4. Facebook server向app server返回XML或JSON格式的数据。

5. app server向Facebook server返回包含了HTML/JS和FBML标签的页面。

6. Facebook server向用户浏览器返回HTML/JS页面显示。

当用户与app交互时,会发生以下事情:

1. 如果app有链接到新的页面,重复第1到6步。

2. 和iframe app一样,在app中使用JavaScript发送异步请求。

注意

在FBML app中,异步的JavaScript请求必须在fb:iframe中发送。 阅读更多 »