facebook api介绍

转自(http://sls.weco.net/node/10773)

一、Facebook API 基礎概念

  • Facebook API 概論 :
  1. API 最大的好處在於可以讓程式開發人員只需要根據 API 定義的方式呼叫相對應的功能,無須瞭解該功能底層的原始碼為何或理解其內部運作機制的細節。Facebook API 正是 Facebook 所推出的應用程式介面,我們可以透過這個應用程式介面存取 Facebook 中使用者、群組、個人檔案、相片等資料。
  2. 使用 Facebook API,須先下載 API 函式庫,並安裝到 Facebook 應用程式所在的伺服器。目前 Facebook 共有六種官方支援的 函式庫 ,分別是 PHP5、JavaScript、Facebook iPhone SDK、ActionScript 3.0、Microsoft SDK 與 Force.com。
  • Facebook 提供的技術資源 :
  1. Facebook 的應用程式又分為 FBML 和 iframe 兩種,FBML (Facebook Markup Language) 是 Facebook 提供的網頁標記語言,與 HTML 類似,為了隱私權、安全性以及一些其他的考慮因素,Facebook 並不允許用戶使用所有的 HTML 標籤。FBML 的運作模式是,用戶在自己的伺服器上用 FBML 開發網站,然後在 Facebook application 中設定網站路徑 (canvas page),Facebook 將用戶的 Request 處理後傳到開發者的 Web Server,接收到開發者的 FBML 頁面以後再轉換成用戶瀏覽器使用的 HTML。在 FBML 模式運作中,用戶完全不會與開發者的伺服器接觸,而是透過 Facebook 作為橋樑,保證了用戶端和開發者端的私密性,也避免開發者的伺服器承受過多流量。這種模式的優點是可以跟 Facebook 作最緊密的結合,其 style 不用費心,只要使用 FBML 的 Tag,應用程式看起來就像是 Facebook 的一部分。而且可以直接取用許多 Facebook 已經開發好的 Tag。但是缺點在於與 Facebook 耦合度高,只適合作為新專案開發,如果是現有的網站想要套入 Facebook 裡面,就需要經過大幅修改。
  2. 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 以外的平台上運作,而不必花上大量時間修改。
  3. FBJS 是 Facebook 提供的 JavaScript 函式庫,可以讓開發者很容易產生許多 Facebook 的動作,例如對話框。也可以用來產生與操作 FBML 的 Tag,整合 Ajax 技術等等。
  4. Facebook 提供 REST 風格的 API,就是任何程式語言都能夠利用 HTTP 協定來存取 Facebook 所提供的服務。而 Facebook 也很親切地為各位準備好了許多程式語言的 Client Library,PHP、Javascript、IPhone 和 Flash / Action Script 的 Library 是由 Facebook 官方提供,而 C#、Java、C++…等等多種不同語言的 Library 都有第三方的開發支援,甚至像是 LISP 這樣的人工智慧語言都有。開發者幾乎可以使用 API 操作 Facebook 的所有資訊,像是朋友名單、塗鴉牆、活動名單,邀請朋友等等。
  5. 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 API

  • 權限 API (Permission API)
  1. 管理應用程式的開發者設定
  2. 擷取應用程式的各項評估資訊
  3. 阻擋特定的使用者
  4. 取得應用程式的公開資訊
  • 授權 API (Authorization API)
    議程(Session)與登入資訊的管理
  • 批次 API (Batching API)
    稍微瞭解 Facebook App 運作方式的人都知道,應用程式存放的地方不是在 Facebook 的 Server 群之中,而是在開發者自己的遠端 Hosting 上面,所以 App 與 Facebook API 之間的溝通就會透過遠端 API Call 來進行,當然這也就造成了 App 運作效能最大瓶頸之所在。所以 Facebook 提供了批次 API 讓開發者可以一次最多將20個 Facebook API Call 打包成一次的 HTTP Request,並可設定是要用循序的或是並列式的去發出。
  • 評論 API (Comments API)
    開發者可以透過此 API 對 Feed Stories 的評論進行程式化的取得、建立、刪除。
  • 資料存放 API (Data Store API)
    簡言之,開發者可以透過這個 API 將資料存放在 Facebook 的伺服器中 (建立資料表格、物件以及其間的關聯) 。
  • 事件 API (Event API)
    允許應用程式以使用者的身分去建立擁有 RSVP (ReSource reserVation Protocol,資源預留協議) 功能的事件、管理事件專屬的媒體、事件輸出功能。
  • FBML API
    建立客制的 FBML 標籤、更新被快取的圖片、上載地區化的文字、更新 Profile Box 的 FBML。
  • 訂閱 API (Feed API)
    程式化的建立新聞樣板、程式化的新聞發布。
  • FQL API
    應用程式可以透過 SQL-Like 的語法去 Facebook 擷取想要的資料,許多 Facebook API 內部也大量的使用 FQL,所以直接使用 FQL 擷取資料可以更有彈性與效率。透過 FQL API 開發者可以發出單一 FQL 查詢或是循序的相依 FQL 查詢,遺憾的是 preload FQL 無法透過此 API 進行。
  • 連結 API (Links API)
    發布連結到使用者的塗鴉牆之中,功能就如同 Facebook 網站上無所不在的 Share 功能鍵。
  • 用戶管理 API (User Management API) 
    這組 API 應該就是 Facebook 最重要的 API 了,主要功能是用來管理 Facebook 最重要的使用者社群圖像,包含取得特定使用者的個人資訊、朋友清單、檢查使用者是否授權某些應用程式等等。
  • 網誌 API (Notes API)
    允許應用程式去發布、編輯、刪除 Facebook 上的 Notes,Notes 就是使用者位於 Facebook 上的 Blog。
  • 消息 API (Messaging API)
  1. 發送 Facebook 通知 (Notification) 以及 email
  2. 更新使用者在 Facebook 上的狀態
  3. 發送 LiveMessages
  • 頁面 API (Pages API)
    Pages 以前就是大家所熟悉的粉絲專區,但是近期 Facebook 將其重新定位後,Page 運作起來就像是一般的使用者 Profile,透過 Pages API,可以知道目前登入的使用者是否是該 Page 的管理者,也可以知道該 Page 加入了哪些應用程式,附帶一提的是,Page 的粉絲就如同一般使用者 Profile 的朋友一般。
  • 影像 API (Photo and Video API)
    應用程式透過此 API 可以建立相簿、上傳相片與影音、取得標籤資訊。
  • 配置 API (Profile API)
    應用程式頁籤 (Application Tabs)、使用者的應用程式資訊區塊 (Application Profile Boxes)、信息區(Info Sections)。
  • 開放標準 API (Open Stream API)
  1. 自 Wall 中讀取出並發布內容
  2. 管理評論並對個別的 Feed Stories 下評價

三、API 類別

  • Ⅰ. Core APIs
  • Ⅱ. Advanced APIs
  • Ⅲ. SDKs

Graph API

  • Graph API 能讓您在 Facebook 社交平台上記錄活動以及連結。Graph API Reference 提供所有活動以及連結的 API。有關 API 的介紹及概念,請參考 Graph API overview,使用的 Objects 為下列所示 :
  1. Album
    相簿
  2. Event
    指定活動訊息,包含位置、活動名稱和參加邀請活動
  3. Group
    社群
  4. Link
    分享連結在塗鴉牆上
  5. Note
    網誌
  6. Page
    頁面,步驟參考 : Facebook Page
  7. Photo
    相片
  8. Post
    動態消息
  9. Status message
    狀態資料
  10. User
    個人檔案
  11. Video
    影片

Social plugins

  • Social plugins 能找出您的朋友喜歡什麼、分享什麼,回應些什麼,是 Facebook 的擴充元件,提供您與您在 Facebook 網站上同樣等級的隱私控制,完全由您決定要跟誰分享哪些內容。有關 Social plugins 的詳細說明,請參考 Learn more,使用的 plugins 為下列所示 :
  1. Like Button
    只要點一下 "讚" 按鈕,就能讓您和分享者網頁之間產生連結關係。
  2. Activity Feed
    顯示您的朋友在個人頁面留下的喜好和意見。
  3. Recommendations
    提供了個性化的推薦網頁功能,能在您的個人頁面推薦喜歡的網頁。
  4. Like Box
    使用者能夠對喜愛的事物建立粉絲專頁,並持續地追蹤消息。
  5. Login with Faces
    進入頁面時,顯示使用者朋友的大頭照,包含登錄的按鈕。
  6. Facepile
    進入頁面時,顯示使用者朋友的大頭照。
  7. Comments
    使用者能在您的個人頁面上留言。
  8. Live Stream
    讓您與使用者共享即時的活動與意見,互動的關係充滿了臨場感。

FQL

  • Facebook Query Language API,使用 SQL-style 的介面去 query (查詢) Graph API 裡面的資料,提供一些 Graph API 所沒有的進階功能,包括分配大量的 queries 至單一的呼叫。您可以透過https://api.facebook.com/method/fql.query?query=QUERY 執行 FQL 查詢,且能夠使用format 指定成 XML 或 JSON 的回傳格式。查詢的形式為 SELECT [fields] FROM [table] WHERE [conditions],與 SQL不太一樣,FQL 的 Form 子句只能包含單一表格。您可以使用 IN 關鍵字SELECT 子句或是 WHERE 子句來做子查詢,但是子查詢不能引用外部查詢範圍的參考變數,查詢必須是可加索引的。有關 FQL 的詳細說明,請參考 Performance Guide,使用查詢表格的範例為下列所示 :
  1. album
    回傳相簿資訊
  2. application
    回傳應用程式的唯讀內容
  3. comment
    得到一或多個 fb:comments / 評論訊息的交換標識符
  4. connection
    回傳使用者的朋友和連結的 Facebook 頁面
  5. cookies
    回傳 cookie 的資料
  6. developer
    回傳在 Facebook Developer application 指定的開發者用戶的應用程式 ID
  7. event
    回傳活動的資訊
  8. event_member
    回傳使用者的活動狀態資料
  9. family
    回傳使用者詳細的親友資料
  10. friend
    確認兩個用戶之間是否為朋友關係
  11. friendlist
    回傳指定用戶的朋友清單
  12. friendlist_member
    確定哪些用戶在朋友名單內
  13. friend_request
    確認用戶是否已經送出交友邀請
  14. group
    回傳社團的資料
  15. group_member
    回傳社團成員的資料
  16. like
    回傳喜愛這項事物的使用者 ID
  17. link
    回傳當前用戶所發布的連結
  18. link_stat
    回傳分享活動的詳細資訊
  19. mailbox_folder
    回傳用戶的信箱文件夾資料
  20. message
    回傳以線程的方式呈現的訊息
  21. metrics
    擷取應用成式的數據
  22. note
    回傳當前用戶撰寫的網誌資訊
  23. notification
    得到使用者當前會話的通知
  24. object_url
    回傳 URL 的資訊
  25. page
    回傳 Facebook 頁面的資訊
  26. page_admin
    回傳 Facebook 管理頁面的資訊
  27. page_fan
    回傳 Facebook 粉絲頁面的資訊
  28. permissions
    回傳當前用戶授與的應用程式
  29. permissions_info
    回傳權限的描述資訊
  30. photo
    回傳相片資訊
  31. photo_tag
    回傳相片標籤資訊
  32. privacy
    回傳使用者的隱私設定資料
  33. profile
    回傳用戶的個人資料的可視資訊
  34. standard_friend_info
    確認兩個用戶之間是否為朋友關係
  35. standard_user_info
    回傳用戶的標準解析訊息
  36. status
    回傳一個或多個用戶的狀態
  37. stream
    回傳共享即時的活動與意見之發布內容
  38. stream_filter
    回傳共享即時的活動與意見之過濾內容
  39. stream_tag
    回傳共享即時的活動與之意見標籤
  40. thread
    回傳用戶收件箱的郵件線程資料
  41. translation
    回傳當地的字串並依照應用程式做翻譯
  42. user
    回傳詳細的個人資料
  43. video
    回傳影片資訊
  44. video_tag
    回傳影片標籤資訊

FBML

  • Facebook Markup Language API 能讓使用者建立應用程式,您可以掛接到數個 Facebook 整合點,包括腳色擴展屬性,腳色擴展屬性行動,和畫布 (canvas)。我們不建議新開發者使用 FBML,如果您尚未使用 FBML,您的應用程式應該要用 iframe 來執行,使用 JavaScript SDK 和 Social plugins 作為 Facebook 服務的客戶端的整合。但是,如果您必須創建一個應用程式,是運行於用戶 Facebook 上的個人資料之標籤 (tab),您就需要使用到 FBML; 因為標籤不支援 iframe,使用的 API 為下列所示 :
  1. Tools (工具)
  2. User/Groups (用戶 / 社團)
  3. Notifications and Requests (通知與邀請)
  4. Platform Internationalization (平台國際化)
  5. Deprecated (不適用的)
  6. Status Messages (狀態消息)
  7. Page Navigation (頁面導覽)
  8. Wall (留言板)
  9. Visibility on Profile (內容可視度)
  10. Profile-specific (內容特定化)
  11. Misc (各式各樣的)
  12. Editor Display (編輯器顯示)
  13. Embedded Media (嵌入式媒體)
  14. Dialog (對話)
  15. Additional Permissions (附加的權限)
  16. Social Widgets (社交小工具)
  17. Message Attachments (訊息附件)
  18. Forms (表格)

Old REST API

  • Old REST API 是 Graph API 之前的版本,它能讓您透過簡單的 HTTP 請求與 Facebook 網站交互編程。如果您是初次來到 Facebook 平台,我們建議您使用最新的 Graph API。如果您的應用程式尚未更新使用 OAuth,請參考以下 old wiki documentation 提供的詳細建構要求 :
  1. Administrative Methods (管理方法)
  2. Login/Auth Methods (登錄 / 權威性方法)
  3. Data Retrieval Methods (數據檢索方法)
  4. Publishing Methods (發布方法)
  5. Facebook Connect Methods (Facebook 的連接方法)
  6. Mobile Methods (短信服務方法)
  7. Dashboard API Methods (儀表板 API 方法)
  8. Events API Methods (事件 API 方法)
  9. Custom Tags API Methods (自定義標籤 API 方法)

JavaScript SDK

  • JavaScript SDK 能讓您透過 JavaScript 進行所有的 Graph API 的功能,它提供強大的客戶端認證與分享功能。JavaScript SDK 仍需使用 Social Plugins 的 XFBML版本。要使用 JavaScript SDK,您必須註冊您的應用程式。請確保您的基準網域是被設置在您的應用程式駐留的網站基準 URL。使用說明參考Facebook for Web Sites 和 Authentication guide。網頁加載 SDK 最有效的方式為非同步載入,以便它不會阻擋載入其他元素到您的網頁上。此 SDK 為開放程式碼,可以在 GitHub 網站上取得,API 如下 :
  1. FB.api
    讓 API 呼叫 Graph API
  2. FB.getLoginStatus
    瞭解當前服務端的狀態,並於用戶連接獲得一個會議。
  3. FB.getSession
    當前會議使用同步訪問。
  4. FB.init
    初始化資料庫。
  5. FB.login
    登錄 / 授權 / 權限。
  6. FB.logout
    後台操作使用者登出。
  7. FB.ui
    Facebook 觸發界面的方法,像是 iframe 對話框或彈出式廣告,如發布即時訊息、共享連結。
  1. FB.Event.subscribe
    訂閱某一特定活動,當活動觸發時實行您的回傳函式。
  2. FB.Event.unsubscribe
    刪除訂閱活動,與 FB.Event.unsubscribe 屬性相反。
  1. FB.XFBML.parse
    在文檔中解析和展現 XFBML 標記。
  1. FB.Data.query
    執行參數化的 FQL 查詢,並回傳一個可等待非同步的存取資料 FB.Data.query 物件。
  2. FB.Data.waitOn
    等待到所有查詢的結果呈現待命狀態。
  1. FB.Canvas.setAutoResize
    啟動或停止一個定時器,每隔幾毫秒重新調整你的 iframe。
  2. FB.Canvas.setSize
    告訴 Facebook 以重新調整 iframe。

『Achievements API,Scores API』

平常我們在玩Facebook遊戲時,旁邊都會顯示好友們玩遊戲的紀錄跟分數,就是使用Scores API跟Achievements API的技術。

Achievements API提供使用者發布他們玩遊戲時達到一個Level的訊息。

Scores API提供使用者發布玩遊戲時取得的分數以及最高成績的訊息。

使用者要使用以上API發布訊息前需要通過publish_actions來同意存取分數。

上一篇:hadoop 2.2.0集群安装


下一篇:[HTML]POST方法和GET方法