Facebook API簡介
作者:黃彥傑 / 臺灣大學資訊網路與多媒體研究所碩士班
社群網路在近來快速崛起,包括台灣流行的Plurk[1]、美日的Twitter[2]和全世界的Facebook[3],在這兩年來皆有突破性的成長。將這些互動經驗與網站結合,善用社群網站所擁有的鏈結與關係,可以有效提昇網站的可見度與宣傳性。對於這個程式開發者不可不知的知識,本文將針對會員人數最多的Facebook的API做一簡介。
背景
社群網路中以Facebook成長最為快速,短短五年間就累積了五億多名會員,爆炸性成長背後的主要原因就在於『好友關係』,朋友們彼此間成立密不可分的社群關係,使Facebook的使用人數以指數性的曲線往上衝升。也正因如此的型態與關連,許多創新的行銷手法一一出現,正所謂『朋友的分享不是廣告』,許多網站、新聞都藉著這種分享紅極一時,甚至有人稱之為『病毒行銷』,指出在Facebook上的宣傳有如病毒一般擴散的非常快速。因此,Facebook的出現,不僅僅提供了使用者彼此間聯繫感情的管道,更重新定義了企業、網站與使用者互動的方式。根據統計,光是每天在Facebook上『按讚』分享文章的使用者可能就超過六千五百萬人次。
Facebook API
Facebook API可以應用在多種環境下,包括網站(Website)、Facebook應用程式(Apps
on Facebook.com)以及行動應用程式(Mobile Apps)。根據不同的平台,Facebook也提供了不同的SDK(Software
Development Kit)給開發者使用,包含了網站上使用的JavaScript SDK、PHP & Python SDK,以及行動裝置上的iOS
SDK(iPhone & iPad)、Android SDK等,可以說無論在哪個平台上皆可看到Facebook API的身影。
使用Facebook API並不困難,甚至有越來越簡易的趨勢。在過去一兩年間,由於將Facebook
API用在網站上的使用人數大幅增加,Facebook也將常用到的一些服務包裝成套件供開發者直接套用(Facebook稱之為Social
Plugin),其中包含最常見的『按讚』、『朋友的動態』、『留言系統』…等。若一般網站開發者需要使用這些功能,只要到Facebook開發者網頁填寫一些必要的資訊(appID、plugin的寬度、回傳url…等),Facebook便會自動替開發者產生相對應的plugin程式碼,接著開發者只需要將這些程式碼嵌入網頁中就大功告成了!而在筆者截稿之前,Facebook甚至開放『留言』(comment)
API,進一步將Facebook的互動融入在各個網站中。
但無論Facebook提供各種API,追根究柢,其實大家想要使用Facebook
API的目的終究是希望能夠擷取使用者以及與使用者相關的一些物件(朋友、網頁…等)之間的鏈結,也因此Facebook將這個概念濃縮成為一個核心概念,稱之為Social
Graph。而存取這些關係的API,就稱之為Graph API。依照Facebook在官方文件上對於Graph API的說明如下:Graph
API提供了可以一窺社群網路的方法,並提供物件本身的資訊以及物件間彼此的鏈結關係。這邊所提到的物件,其實在Facebook裡的定義是非常廣泛的,舉凡人、照片、事件、網頁都可以是一個物件。而鏈結關係就是這些物件間彼此的關係,例如人跟人之間的關係(朋友/非朋友)、人跟照片的關係(人擁有某些照片、照片上的標籤屬於某些人等)、人跟事件與網頁的關係(讚)...等。因此其實也可以說,任何你需要Facebook提供的資訊,Graph
API幾乎都能滿足你的需求。
http://graph.facebook.com/austintodo
舉例來說,基本的Graph
API可以得知某個物件的資訊。若我想要知道某個人(以我為例,Facebook帳號名稱為austintodo)的基本資訊,開發者可以直接向Graph
API詢問關於austintodo的相關資訊(http://graph.facebook.com/austintodo),Facebook就會將austintodo這位使用者個人公開的資訊回傳給開發者。簡而言之,若開發者需要任何物件(如同上述的『物件』,人、照片、事件、網頁皆視為物件)的相關資訊,只需要向Graph
API丟出一個請求即可(例如:coca-cola的事件相關資訊,就可以丟出https://Graph.Facebook.com/cocacola這樣的請求)。而進一步來說,若開發者需要知道物件與物件之間的鏈結時,則只需要指名物件的ID以及鏈結的形態即可,並透過這樣的結構:https://Graph.Facebook.com/ID/CONNECTION_TYPE向Facebook索取即可[4]。
而若上述的方式無法滿足開發者的需求,Facebook更提供了一套類似SQL的查詢方式,稱為FQL。如同SQL,FQL的標準使用方式為:SELECT
[fields] FROM [table] WHERE [conditions],fields為id, name,
pictures..等,table為user, album, comment…等,conditions則試開發者需求自行設定。[5]
然而,提供了如此多樣化的API以及豐富的資訊,不禁讓社會大眾開始關切隱私權的議題。若任何一個開發者都可以藉由輸入ID以及鏈結型態就可以拿到某個物件的關係圖,那麼用戶的隱私蕩然無存。因此Facebook也提供了授權(authorization)機制:任何可能擷取到關於隱私的資料時,在Graph
API的請求中應該要附加一個存取鑰匙(access
token)。如此一來若這些app想存取某些隱私資料時,必須經過Facebook的授權以及使用者的認可後才可開放存取。
Facebook採用OAuth2.0認證方式,總共有三個步驟:使用者認證(user authentication)、app授權(app
authorization)、app認證(app
authentication)。使用者認證:確保使用者即為使用者本人;app授權:向使用者確認他們即將授權此app拿到這些隱私資料;app認證:確保使用者授權的app就是目前這個app。經過這三階段的認證後,app即可從Facebook得取存取鑰匙(access
key),而之後向Graph API索取資料時,只需要將access token附加在Graph API請求後即可(如:https://Graph.Facebook.com/me?access_token=ACCESS_TOKEN)
結語
總括來說,在這樣一個社群統治的資訊時代裡,Web
2.0的概念已經不敷使用。網友們不會再相信雜亂無章的資訊,而是死心踏地的忠誠於朋友的推薦;不會再透過google搜尋有趣的新聞,而是從Facebook塗鴉牆內看遍世界。如此的情況對傳統網站是種危機,卻也是轉機。若不懂適度的調整網站內容、使用方式,那麼Web
3.0的潮流很快就會淘汰過於陳舊的網路資訊;若是懂得借力使力、調整風帆,那麼病毒式的社群行銷將會是提高網站拜訪率的得力助手!
參考文獻與相關連結
[1] http://www.plurk.com/
[2] http://twitter.com/
[3] http://www.facebook.com/
[4] Facebook API
document, http://developers.facebook.com/docs/reference/api/
[5]
FQL, http://developers.Facebook.com/docs/reference/fql/
分享到:
相关推荐
#### 一、引言:Facebook 平台简介(第一章) 本章节主要介绍 Facebook 平台的基本概念及其在社交网络中的地位与作用。通过本章的学习,开发者能够了解 Facebook API 的核心价值,并对如何利用这些 API 构建自己的...
Unity Facebook API 官方 Demo 是一个为游戏开发者提供的完整工程,它展示了如何在Unity引擎中集成Facebook的功能,以便实现用户登录、得分分享、排行榜展示以及头像获取等社交互动功能。这个Demo项目名为...
#### 一、引言:Facebook 平台简介(第一章) 本章节主要介绍 Facebook 平台的基本概念及其在社交网络中的地位与作用。通过本章的学习,开发者可以了解 Facebook API 的核心价值,并对如何利用这些 API 构建应用...
基于java的开发源码-Facebook API 的Java 封装请求处理组件 RestFB.zip 基于java的开发源码-Facebook API 的Java 封装请求处理组件 RestFB.zip 基于java的开发源码-Facebook API 的Java 封装请求处理组件 RestFB.zip...
Facebook API和Facebook_JAR包是开发者用来与Facebook平台进行交互的重要工具,它们使得开发者能够创建应用程序,集成到Facebook生态系统中,实现数据交换、用户登录验证、发布内容等功能。Facebook API通常指的是...
RestFB 是一个强大的 Java 库,专为简化与 Facebook API 的交互而设计。它提供了一个易于使用的接口,允许开发者通过 Java 代码执行各种 Facebook Graph API 和 Marketing API 的操作。在这个"Facebook API 的 Java ...
RestFB 是一个强大的 Java 库,它为开发者提供了一个简洁的方式来与 Facebook Graph API 进行交互。这个组件简化了在 Java 应用程序中访问和操作 Facebook 数据的过程,包括用户信息、页面、事件、照片、视频等。让...
Graph API是Facebook开发平台的核心部分,支持多种编程语言,包括Adobe ActionScript 3 (AS3)。 在ActionScript 3中,Adobe提供了SDK来方便开发者使用Graph API。这个SDK可能包含以下文件: 1. `....
这些信息是与Facebook API进行通信的基础,确保了应用的身份和安全性。 PHP Facebook SDK是Facebook官方提供的一个库,它使得PHP开发者能够轻松地集成Facebook功能到他们的网站或应用中。该SDK支持OAuth 2.0授权...
Facebook的API实例是开发者用来与Facebook平台交互的一种方式,它允许你构建应用,获取用户数据,发布内容,以及实现各种社交功能。在这个实例中,我们将深入探讨如何使用Facebook的Graph API和JavaScript SDK来实现...
Facebook API Developers Guide 2008.pdf
Facebook API 是一个强大的工具,允许开发者与Facebook平台进行交互,实现各种功能,如社交分享、用户登录、数据获取等。源码分析可以帮助我们更深入地理解API的工作原理和使用方法。以下是对Facebook API的一些关键...
facebook-chat-api, 针对Nodejs的非官方Facebook聊天 API 非官方的Facebook聊天 APIFacebook现在有一个官方的API聊天机器人这里。这里API是在用户帐户上自动实现聊天功能的唯一方法。 我们通过模拟浏览器来实现。 这...
**基于Java的Facebook API封装库:RestFB** 在Java开发中,与Facebook API进行交互时,通常需要一个方便、高效的库来处理API调用。RestFB(Restful Facebook)就是这样一款开源库,它为Java开发者提供了简洁的API,...
标题"基于Java的实例源码-Facebook API 的Java 封装请求处理组件 RestFB.zip"表明这是一个使用Java语言编写的库,专门用于处理Facebook API的请求。RestFB是一个流行的开源库,它为Facebook Graph API提供了一个简洁...
**Python库 django-facebook-api-0.6.3** 在IT领域,Python是一种广泛使用的编程语言,因其简洁明了的语法和强大的库支持而备受青睐。本资源“django-facebook-api-0.6.3.tar.gz”就是一个针对Python开发的库,主要...
RestFB是一个开源的Java库,专门用于简化与Facebook Graph API的交互。这个压缩包"基于Java的源码-Facebook API 的Java 封装请求处理组件 RestFB.zip"包含了一个名为"revertkn-restfb-8ea188b"的子文件夹,这很可能...
在Java中实现Facebook REST API的调用,可以借助于各种库,比如Facebook4J或Spring Social Facebook。这篇博客“facebook rest api java简单实现”可能详细讲解了如何在Java环境中设置和使用这些库来执行API请求。 ...
RestFB是一款针对Facebook Graph API的Java库,它简化了与Facebook平台进行交互的过程。通过封装Facebook的API,RestFB提供了一种简洁的方式来执行常见的任务,如发布状态、获取用户信息、处理事件等,无需深入了解...
### Facebook OAuth2.0 API 调用方法与常用接口详解 #### 一、Facebook OAuth2.0 API 概述 OAuth2.0 是一种开放标准授权协议,它为应用程序提供了一个安全的方法来授权第三方应用访问用户的资源,而无需透露用户名...