facebook程式設計(2)-程式架構說明

facebook的程式,你知道有幾種嗎?

讓我們來看看它的「說明文件」,只需要看它的API Reference就可以了,你看到了幾種呢?

這就是喵咪剛學facebook時所遇到最大的問題,語法種類太多,而且有些可以混用,有些卻不行,

剛開始寫的時候根本搞不清楚,所以我才決定要來寫這篇文章,

簡單的說明我知道目前的狀況。

首先有一件事情是你不可不知道的,就是facebook的語言曾經改版過,

因此在網路上呈現新舊版本語言混雜的情況…

由於舊版的程式不知道什麼時候將會面臨廢除的命運,

因此現在要寫的話,當然是寫新版的程式了,

而且其實新版的程式是比舊版本更簡單更方便的喔~

一個簡單的判斷方法,是看那個網頁有沒有載入xd_receiver.htm檔,

如果有的話那就是舊版的程式,至於沒有的話就自己猜猜看吧…

接下來,facebook的程式主要有2大應用,

  1. 在facebook上開發程式:像我們在facebook上玩的小遊戲,開心農場、餐城…等等都是屬於這種。
  2. 登入到網站:有些網站可以使用facebook的帳號登入,例如遊戲基地、迷你客,本站也可以使用facebook帳號登入(雖然是用外掛)。

不同的應用方式,使用的「主力」就會不一樣。

在上一篇建立應用程式的介紹中,有提到畫布的設定可以是FBML或iFrame,這二種程式寫法會有差異,

在iFrame中開發者必需自己處理登入狀態,因此程式的寫法和上面第2種運用(登入到網站)就是一樣的。

雖然在API Reference中寫了很多種語言,不過你可以先不必管這麼多,

寫手機的先排除在外,這樣你要知道的就只有:

JavaScript SDK、PHP SDK和Facebook Markup Language (FBML)

這就是你一開始要先「選擇」的語言。

在FBML模式的畫布中,當然就是直接採用FBML語言了,它是簡單又容易使用的tag語言,

不過當你的程式是用flash開發時,可能會需要和JavaScript SDK做結合。

在iFrame中一定要選擇JavaScript SDK或PHP SDK來使用:

  1. JavaScript SDK:可實現所有facebook的功能。
  2. PHP SDK:可以處理登入程序,並取得使用者資料。

不過以我個人的使用經驗,覺得在iFrame模式下,PHP SDK並不好用…

因此我想它可能比較適合前面提到的第2種應用(登入到網站),

在它的範例文件中,也是結合JavaScript SDK使用的,

網路上也有找到 Java 的 API ,我自己沒有使用,有興趣的人可以到 這裡 下載。

如果你已經開始寫程式了,你會發現facebook還有一種叫XFBML的語言,

當你載入JavaScript SDK後就可以使用,

它是一種和FBML長得一模一樣的語言(搞不懂它幹嘛弄成一樣)

可是你在FBML畫布上寫XFBML是不會執行的~!!!

你在可以執行XFBML的JavaScript SDK下,寫FBML語法也是不會執行~!!!

這真是一個巨大的陷阱啊……

想要區分這兩者的差別,就只能夠看清楚說明文件上的清單了,

FBML:http://developers.facebook.com/docs/reference/fbml/

XFBML:http://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse

除了上面提到的四種語言外,還有三種是你必需要知道的,

一個是Graph API,它是用來取得facebook上面的資訊,

你可以利用JavaScript SDK或PHP SDK來和它聯繫。

另一個是Facebook Query Language (FQL),也就是facebook的SQL,

它可以使用 JavaScript SDK 的 FB.Data.query 來存取。

最後是Old REST API,

它可以透過 JavaScript SDK 的 FB.ui 來實現。

所以當你開啟 JavaScript SDK 的說明文件時,你就會發現上面幾種語言被列在它的左上角了(Social plugins就是採用XFBML)。

看到這裡…應該會覺得很混亂吧……|||

為了讓大家能更清楚的了解,我畫了一張架構圖,

不過以上這些都是我自己的理解,如果有錯誤的話歡迎指正喔~

facebookAPI架構

其實喵咪也是facebook的新手,並且沒有想要增進自己功力的打算(逃)

寫這篇是希望對剛入門的朋友有所幫助,順便把自己研究的心得記錄下來,

接下來的文章由於某些可能會牽扯商業利益,所以喵咪會鎖起來,只提供親友觀看,

密碼就打喵咪的電話吧~