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)廣告,實現(xiàn)商業(yè)價值和盈利目標(biāo)。
在這些開發(fā)者中,有專門從事開放平臺應(yīng)用開發(fā)的公司或個人,他們有明確的商業(yè)目的,希望得到收入或其他商業(yè)回報;有以興趣為導(dǎo)向,在開放平臺上從事開發(fā)的個人,如學(xué)生群體等,他們?yōu)榱嗽趹?yīng)用傳播和使用中獲得成就感并獲得一定收入;還有一些是看重社交平臺用戶資源,希望將應(yīng)用與自身的傳統(tǒng)業(yè)務(wù)結(jié)合起來的商家,開放平臺對他們來說是推廣的渠道和獲取用戶的手段。
有統(tǒng)計顯示,F(xiàn)acebook的開發(fā)者隊伍一年多的時間里就聚集了20多萬位開發(fā)者的45899個應(yīng)用。這些開發(fā)者和應(yīng)用極大地增加了Facebook的吸引力。而Facebook屏蔽了谷歌的搜索,在谷歌中無法搜索到Facebook的數(shù)據(jù),F(xiàn)acebook成為獨立于搜索世界之外的社交網(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,使之處理對象時更加一致。注意,盡管 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 可被進一步限定,以尋址一個特定的對象/連接。對象 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)限(被稱之為擴展權(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ā)生進一步的更改。SDK 發(fā)布于 Apache License, Version 2.0 之下。
Facebook SDK for Android 隱藏了前一節(jié)(Facebook Platform API 概述)中介紹的很多細(xì)節(jié)。這是通過提供 表 1 中描述的 6 個 Java 類來實現(xiàn)的。
類 | 說明 |
---|---|
AsyncFacebookRunner | 一個實現(xiàn)異步 Facebook API 調(diào)用的幫助器類 |
DialogError | 一個封裝對話框錯誤的類 |
用于與 Facebook Platform API 交互的主 Facebook 類 | |
FacebookError | 一個封裝 Facebook 錯誤的類 |
FbDialog | 一個為 Facebook 對話框?qū)崿F(xiàn) WebView 的類 |
Util | 一個帶有大量實用方法的幫助器類 |
Facebook SDK for Android 也帶來一些有用的例子,您可以用來作為自己應(yīng)用程序的起點。
尤其有趣的是核心 Facebook 類和 Facebook Dialog 類,下面將更為詳細(xì)地介紹它們。核心 Facebook 類封裝了對用戶進行授權(quán)、創(chuàng)建 Facebook 對話框、發(fā)出 API 請求、注銷用戶以及獲得或設(shè)置訪問和會話信息及狀態(tài)的方法。Facebook Dialog 類實現(xiàn)了一個 WebView 及其創(chuàng)建它的方法以及用于處理 Facebook URL(狀態(tài))響應(yīng)的邏輯。SDK 操作離不開對話框。SDK 提供兩種方法進行身份認(rèn)證,一種稱之為單點登錄,如果安裝了的話,它使用原生的 Facebook 應(yīng)用程序?qū)υ捒颍硪环N是默認(rèn)的 WebView 方法。本文我將重點介紹 WebView 方法。其余 SDK 類是幫助器類,用于封裝錯誤信息或者提供整個 SDK 中使用的有用工具。
一個典型 Facebook 應(yīng)用程序的用例:
- 安裝 Facebook SDK for Android
- 注冊您的應(yīng)用程序
- 創(chuàng)建 SampleApp
- 顯示 Facebook 對話框
- 對用戶進行授權(quán)
- 發(fā)出 API 請求