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