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中发送。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: