Facebook開發指南(1) – 基礎概念
其實Facebook會成功,很大的一部分必須歸功於其提供的開發環境豐富且完整,使開發者有充分的空間能夠開發許多有用的應用程式,對網站開發者而言,開發Facebook並不是一件難事,只要瞭解一些基礎的概念,那麼開發API什麼的,都只是一邊閱讀文件一邊開發就能完成的事情。

plant from Stock Photography
這是一系列Facebook application開發文章的第一篇,先聊一些Facebook application開發的基礎概念好了。
其實Facebook會成功,很大的一部分必須歸功於其提供的開發環境豐富且完整,使開發者有充分的空間能夠開發許多有用的應用程式,對網站開發者而言,開發Facebook並不是一件難事,只要瞭解一些基礎的概念,那麼開發API什麼的,都只是一邊閱讀文件一邊開發就能完成的事情。
雖然Facebook提供的Client Library包含很多種不同的程式語言,但如果你對於程式設計沒有概念的話,最好先挑一個程式語言開始學起,才能夠自己開發Facebook應用程式,如果你已經瞭解應用程式的開發的話,就請來一起看看吧:
Facebook應用程式的分類:
網頁應用程式:Facebook網頁應用程式,泛指任何以Web為介面與Facebook互動的應用程式,可以再分成Facebook-based跟Standalone兩種,前者會在Facebook的應用程式頁面中執行,像是Facebook上面的心裡測驗以及最受歡迎的開心農場,都是Facebook-based的應用程式,而後者則是一個獨立的網站,利用Facebook提供的機制,稱為Facebook connect建立與Facebook之間的連結,如http://www.facebook.com/connectnews?v=app_7146470109。Facebook的應用程式又可以再分為FBML和iframe兩種:
FBML:FBML(Facebook Markup Language)是Facebook提供的網頁標記語言,作用跟HTML很像,為了隱私權、安全性以及一些其他的考慮因素,Facebook並不允許用戶使用全部的HTML標籤。FBML模式的運作模式是,用戶在自己的伺服器上用FBML開發網站,然後在Facebook application中設定網站路徑(canvas page),Facebook將用戶的Request處理後傳到開發者的Web Server,接收到開發者的FBML頁面以後再轉換成用戶瀏覽器使用的HTML。在FBML模式運作中,用戶完全不會與開發者的伺服器接觸,而是透過Facebook作為橋樑,保證了用戶端和開發者端的私密性,也避免開發者的伺服器承受過多流量,Facebook會控制這部份的問題,包括在Image上使用cache機制。
這種模式的優點是可以跟Facebook作最緊密的結合,其style不用費心,只要使用fbml的tag,應用程式看起來就像是Facebook的一部分。而且可以直接取用許多Facebook已經開發好的tag。但是缺點在於與Facebook耦合的程度很高,只適合作為新專案開發,如果是現有的網站想要套入Facebook裡面,就需要經過大改。
iframe:iframe是XHTML中的一個頁籤,可以嵌入其他網站的內容到網頁上。簡單來說,就是Facebook僅提供外框,讓開發者嵌入自己的網站到Facebook裡面。這時候,開發者無法直接使用FBML,而要使用XFBML。XFBML跟FBML一部分的Tag是相同的,不過有些FBML的Tag並不能用在iframe當中,而且使用起來樣子也可能不太一樣。此外,用戶可以使用大多數的XHTML標籤,所以適合用在現有的專案上。不過XFBML跟Facebook的耦合度較低,而且用戶必須自行設計網頁的Style。不過,Facebook有提供本身使用的CSS,開發者可以參酌使用。
使用iframe的話用戶的圖片等等多媒體檔案都無法被Facebook快取,用戶的伺服器會直接面對用戶的Request,其安全性較低,開發者本身伺服器所負擔的Loading也比較高。好處是降低與Facebook的耦合度,許多Facebook的Flash小遊戲採用這種方式,這樣做可以使一個應用程式可以在Facebook以外的平台上運作,而不必花上大量時間修改。
Standalone是一個獨立的網站,本身會在Facebook提供的介面框架之外,利用Facebook Connect(連外通)達到與Facebook單一帳號簽入,塗鴉牆分享等等的功能。不過由於是獨立的網站,與Facebook之間的耦合度最低,所以一些有關於Facebook的功能就被限制使用。在這裡也可以使用XFBML,就像是Iframe的一樣。
非網頁應用程式:
Facebook雖然是一個Web Application,但是透過Facebook提供的完整API,Facebook的用戶端平台並不受限網頁介面,由於Facebook提供的Client Library包括十來種常見的程式語言(包括Erlang這種比較少人使用的語言,都有第三方開發者提供),而且本身的API使用REST Service介面,要使用其他的程式預言來實做Client Library也十分的簡單,使Facebook幾乎可以滲透到任何平台。
Flash: Facebook官方提供支援到Action Script 3.0的Facebook Client Library,許多常見的網頁遊戲都可以用Facebook API來跟Facebook溝通。
Desktop:一些桌面軟體,可以取得或發送來自Facebook的動態和訊息,像是Pindin還可以直接把Facebook的線上聊天功能延伸成為即時通訊軟體。
Mobile:Facebook官方就提供了iPhone平台的API,而Android可直接使用Java平台的API,在手機或是其他的行動平台上也可以整合Facebook服務。
以上就是Facebook Application的大致分類,決定要開發Facebook Application,必須先決定整合Facebook的方式,才能決定要使用哪些Facebook技術資源。
Facebook提供的技術資源:
在前一個段落已經說過Facebook所提供的一項支援,也就是FBML,接下來列出其他Facebook提供的技術資源:
FBJS:Facebook提供的Javascript函式庫,可以讓開發者很容易產生許多Facebook的動作,例如對話框。也可以用來產生與操作FBML的Tag,整合Ajax技術等等。
API:Facebook提供REST風格的API,意思就是說,任何程式語言都能夠利用HTTP協定來存取Facebook的提供的服務。而Facebook也很親切地為各位準備好了許多程式語言的Client Library,PHP、Javascript、IPhone和Flash/Action Script的Library是由Facebook官方提供,而C#、Java、C++…等等多種不同語言的Library都有第三方的開發支援,甚至像是LISP這樣的人工智慧語言都有。開發者幾乎可以使用API操作Facebook的所有資訊,像是朋友名單、塗鴉牆、活動名單,邀請朋友等等。
FQL:Facebook Query Language,使用SQL風格的Facebook資料查詢語言,可以透過API中的fql.query和fql.multiquery function查詢虛擬資料表中的資料,這些虛擬資料表包括:album、user、status、profile…等等許多不同種類的資料。其中絕大多數的部份其實都可以透過API介面來取得,但是你也可以使用FQL來做更直接的查詢。FQL操作這些虛擬資料表的方式就跟SQL差不多,但是FQL還是有實做一些特別的功能讓開發者存取這些資料的時候更方便簡單。
FQL只支援SELECT敘述,是不能做Update、Delete和Insert操作的。
如何開始?Facebook提供的支援:
developers.facebook.com:Facebook開發的大本營,任何Facebook應用程式都必須先用http://developers.facebook.com/setup.php設定開發基本資料,加入開發應用程式,取得API Key和Secret之後,才能夠存取Facebook的API資源。
wiki.developers.facebook.com:Facebook開發文件的維基網站,提供API的下載和以上所有技術資源的Documentation。從Best Practice開始了解是一個不錯的主意。
forum.developers.facebook.com:Facebook技術開發論壇,你可以在這裡與全世界的Facebook開發者交流,也可以直接與Facebook開發團隊合作。
對一名有經驗的網站開發者來說,開發Facebook應用程式並不是困難的事情,開發者可以自由使用任何的網站伺服器和任何的Framework,並不會有任何的限制。現在就開始利用Facebook提供的龐大資源吧!
Popularity: 10% [?]




Wolke said:
也來推倒你囉~
歡迎加我facebook好友~
fb帳號同mail
大家可以交流交流~