Facebook開放平臺簡介
開放的Facebook
早在2007年5月,已經(jīng)擁有1.32億名活躍用戶的社交網(wǎng)站Facebook開放了自己的平臺, 所謂開放,就是將Facebook擁有的海量社交用戶檔案和關(guān)系數(shù)據(jù),通過開放自己的API(應(yīng)用程序編程接口),將網(wǎng)站用戶和關(guān)系數(shù)據(jù)開放給第三方開發(fā)者。利用這個框架,第三方軟件開發(fā)者可以開發(fā)與Facebook核心功能集成的應(yīng)用程序。
Facebook的目的就是為了吸引更多的軟件工程師、程序員和游戲開發(fā)愛好者將他們開發(fā)創(chuàng)造的應(yīng)用接口到開放的Facebook社區(qū)中去,這些開發(fā)者開發(fā)的應(yīng)用如果吸引眼球,必然會有更多的人去下載這些應(yīng)用,這些應(yīng)用會在社交網(wǎng)站中以口碑傳播的形式盛行開來。這些開發(fā)者可以直接分享Facebook的用戶,迅速提高產(chǎn)品或品牌知名度,可以加載相關(guān)廣告,實(shí)現(xiàn)商業(yè)價(jià)值和盈利目標(biāo)。
在這些開發(fā)者中,有專門從事開放平臺應(yīng)用開發(fā)的公司或個人,他們有明確的商業(yè)目的,希望得到收入或其他商業(yè)回報(bào);有以興趣為導(dǎo)向,在開放平臺上從事開發(fā)的個人,如學(xué)生群體等,他們?yōu)榱嗽趹?yīng)用傳播和使用中獲得成就感并獲得一定收入;還有一些是看重社交平臺用戶資源,希望將應(yīng)用與自身的傳統(tǒng)業(yè)務(wù)結(jié)合起來的商家,開放平臺對他們來說是推廣的渠道和獲取用戶的手段。
有統(tǒng)計(jì)顯示,F(xiàn)acebook的開發(fā)者隊(duì)伍一年多的時(shí)間里就聚集了20多萬位開發(fā)者的45899個應(yīng)用。這些開發(fā)者和應(yīng)用極大地增加了Facebook的吸引力。而Facebook屏蔽了谷歌的搜索,在谷歌中無法搜索到Facebook的數(shù)據(jù),F(xiàn)acebook成為獨(dú)立于搜索世界之外的社交網(wǎng)絡(luò)。
在介紹 Facebook SDK for Android 之前,有必要了解一下 Facebook Platform 及其 API。據(jù) Facebook 聲稱,F(xiàn)acebook Platform 允許任何人 “在 Facebook 和 Web 上構(gòu)建社交應(yīng)用程序”。為了允許您構(gòu)建此類應(yīng)用程序,F(xiàn)acebook 提供廣泛的一組核心且高級的 API 和 SDK(參見 參考資料)。
核心 Facebook Platform API 是 Graph API,它允許您從 Facebook 讀寫數(shù)據(jù)。Facebook 也具有 Old Rest API。新的 Graph API 將 API 范型從面向方法的從 Facebook 讀寫數(shù)據(jù)的方式更改為一種新的方式,即使用對象(比如說用戶簡介、好友、帖子、照片,諸如此類)及其相互之間的關(guān)系或連接。該方法簡化了 Facebook API,使之處理對象時(shí)更加一致。注意,盡管 Graph API 是***的 Facebook API,但是 Old REST API 仍然是活躍且受支持的。Graph 和 REST API 都適用于移動應(yīng)用程序(包括原生和移動 web 應(yīng)用程序),它們通過使用 WebViews 在原生應(yīng)用程序中包含移動 web 內(nèi)容。
Graph API 對象被分配一個惟一的 ID,很容易使用一個 URL 訪問它,此 URL 可被進(jìn)一步限定,以尋址一個特定的對象/連接。對象 URL 的一般結(jié)構(gòu)類似如下: https://graph.facebook.com/OBJECT_ID/CONNECTION_TYPE,其中 OBJECT_ID 是對象的惟一 ID,CONNECTION_TYPE 是對象支持的一種連接類型。例如,一個頁面支持以下連接:feed/wall、photos、notes、posts、members,等等。
利用 Graph API,您可以檢索對象,刪除對象和發(fā)布對象。您可以搜索、更新對象、過濾結(jié)果,甚至動態(tài)地發(fā)現(xiàn)對象的連接/關(guān)系。
默認(rèn)情況下,應(yīng)用程序?qū)τ脩舻墓矓?shù)據(jù)具有訪問權(quán)限。要訪問私有數(shù)據(jù),應(yīng)用程序必須首先請求用戶的權(quán)限(被稱之為擴(kuò)展權(quán)限)。Facebook 定義了大量權(quán)限,您可以在 Extended Permissions 頁面了解它們(參見 參考資料)。
既然您較好地了解了 Facebook Platform API,下面就來看一下 Facebook SDK for Android。
Facebook SDK for Android 是 Facebook Graph 和 Old REST API 的一個 Java 編程語言包裝器。此 SDK 是開源的,宿主在 github 的 facebook / facebook-android-sdk 倉庫中(參見 參考資料)。注意,由于開源 SDK 的演變特性,它有望發(fā)生進(jìn)一步的更改。SDK 發(fā)布于 Apache License, Version 2.0 之下。
Facebook SDK for Android 隱藏了前一節(jié)(Facebook Platform API 概述)中介紹的很多細(xì)節(jié)。這是通過提供 表 1 中描述的 6 個 Java 類來實(shí)現(xiàn)的。
類 | 說明 |
---|---|
AsyncFacebookRunner | 一個實(shí)現(xiàn)異步 Facebook API 調(diào)用的幫助器類 |
DialogError | 一個封裝對話框錯誤的類 |
用于與 Facebook Platform API 交互的主 Facebook 類 | |
FacebookError | 一個封裝 Facebook 錯誤的類 |
FbDialog | 一個為 Facebook 對話框?qū)崿F(xiàn) WebView 的類 |
Util | 一個帶有大量實(shí)用方法的幫助器類 |
Facebook SDK for Android 也帶來一些有用的例子,您可以用來作為自己應(yīng)用程序的起點(diǎn)。
尤其有趣的是核心 Facebook 類和 Facebook Dialog 類,下面將更為詳細(xì)地介紹它們。核心 Facebook 類封裝了對用戶進(jìn)行授權(quán)、創(chuàng)建 Facebook 對話框、發(fā)出 API 請求、注銷用戶以及獲得或設(shè)置訪問和會話信息及狀態(tài)的方法。Facebook Dialog 類實(shí)現(xiàn)了一個 WebView 及其創(chuàng)建它的方法以及用于處理 Facebook URL(狀態(tài))響應(yīng)的邏輯。SDK 操作離不開對話框。SDK 提供兩種方法進(jìn)行身份認(rèn)證,一種稱之為單點(diǎn)登錄,如果安裝了的話,它使用原生的 Facebook 應(yīng)用程序?qū)υ捒颍硪环N是默認(rèn)的 WebView 方法。本文我將重點(diǎn)介紹 WebView 方法。其余 SDK 類是幫助器類,用于封裝錯誤信息或者提供整個 SDK 中使用的有用工具。
一個典型 Facebook 應(yīng)用程序的用例:
- 安裝 Facebook SDK for Android
- 注冊您的應(yīng)用程序
- 創(chuàng)建 SampleApp
- 顯示 Facebook 對話框
- 對用戶進(jìn)行授權(quán)
- 發(fā)出 API 請求