Facebook API 入门
Facebook 商业价值简介
Facebook 是一个社交网络服务网站,于 2004 年 2 月 4 日上线,到 2010 年 2 月 2 日, Facebook 正赶超雅虎将成为全球第三大网站,与微软谷歌领衔前三。Facebook 一个月内增加的新用户量相当于雅虎一年所增加的用户量,当前的注册用户为 3.5 亿,这些用户中有一半的人每天都会访问网站。面对如此庞大和活跃的的用户群体,企业已经看到了它所蕴含的巨大商机。许多品牌都在 Facebook 上创建了企业账户,收集用户对产品的的评论反馈信息,及时对自己的产品和品牌做出调整,抢占市场先机。目前市场上有很多优秀的舆情智能分析工具,可以海量分析网络上各种媒体介质的信息,通过数据挖掘技术分析出用户的喜好和潜在的购买行为。
Facebook API 简介
获取 Facebook 的数据最常用的途径是通过 web 页面,以 Coca-Cola 为例,用户可以登陆 http://www.facebook.com/cocacola从页面上获得各种数据,包括用户对该产品的评论、产品相册等。Facebook 前端界面做得非常友好,采用了很多最新的 UI 技术,可以带来比较好的用户体验。类似的前端展示技术服务的对象是人,而程序在处理非结构化数据的时候有很多困难,随着前端页面布局的不断更新,仅仅使用网络爬虫的手段很难保证抓取信息的准确性
Facebook 为了解决第三方程序访问数据的问题推出了一套 Facebook API 平台,叫做 Graph API。它让普通用户可以读写在 Facebook Social Graph 的各种对象,这套 API 设计得非常简单,开发人员不需要花大量时间阅读文档,在最短的时间内就可以上手。
Facebook API 开发入门
RESTful 方法获取数据
以 Coca-Cola 的 Facebook 为例,如果我们想获得其它用户在其涂鸦墙 (Wall) 上的评论,我们要做的仅仅是在浏览器中输入 :https://graph.facebook.com/cocacola/feed, 系统将会以 JSON 数组格式返回结果。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
图 2. 获得其它用户在其涂鸦墙 (Wall) 上的评论

数据中包含了消息的 ID、消息内容、作者、作者 ID、发布时间等各种消息。不仅涂鸦墙 (Wall),所有的 Facebook 对象都可以用如下的 URL 结构访问:https://graph.facebook.com/ID/CONNECTION_TYPE, 下表列出了一些常用的对象。
| Facebook对象 | 访问方式 |
|---|---|
| 好友列表 (Friends) | https://graph.facebook.com/{ID}/friends |
| 新闻 (News feed) | https://graph.facebook.com/{ID}/home |
| 用户喜好 (Likes) | https://graph.facebook.com/{ID}/likes |
| 电影 (Movies) | https://graph.facebook.com/{ID}/movies |
| 书籍 (Books) | https://graph.facebook.com/{ID}/books |
| 相册 (Photo Albums) | https://graph.facebook.com/{ID}/albums |
| 上传视频 (Video Uploads) | https://graph.facebook.com/{ID}/videos/uploaded |
| 组 (Groups) | https://graph.facebook.com/{ID}/groups |
只有该对象是 public 的状态下才能直接通过以上方法访问,如果是 private 的,需要提供 access token 访问,文章的下面部分有对应的章节介绍。
Facebook API 开发进阶
使用 access token 访问涂鸦墙
在上面的例子中,我们访问的 Coca-Cola 公司涂鸦墙 (Wall) 是 Public 的属性,所有人都可以查看上面的内容,不需要任何的鉴权。但是大多数个人账户的涂鸦墙的属性都是 private,需要提供正确的 token 才能访问。
Facebook Graph API 使用 OAuth 2.0 作为权限控制,它是一个简化版的 OAuth, 利用 SSL 协议作为 API 的通信,而不是复杂的 URL 签名和 token 交换。使用 access token 的方法特别简单,如果你想查看自己的朋友列表,URL 的的形式如下所示:https://graph.facebook.com/me/friends?access_token=XXXX
me 是参数中的关键字,代表自己的 ID,如果想访问别人的涂鸦墙,就应该用 ID 来唯一确定一个用户。Access token 参数后面是一个系统随机的字符串。
获得 ID 和 Access token
前面概述了怎样使用 access token 访问 private 的涂鸦墙,下面将介绍一种获得 ID 和 access token 的方法。
首先登陆自己的 Facebook 账户后,将鼠标移到头像位置,在浏览器的下面的 URL 就包含该账户对应的唯一 ID。
对用户进行授权
Facebook Platform 对 OAuth 2.0 身份认证提供支持,也支持一种较老的、定制的授权签名方案。编写新应用程序时应该避免使用老的身份认证方案,因为对这种老方案的支持很快就会取消了。更多有关 OAuth 的信息,请参见 参考资料 中的 OAuth 2.0 Protocol 规范。
Facebook SDK for Android 协同 Facebook Platform 一起,隐藏了 OAuth 身份认证的复杂性,如 图
OAuth 2.0 Protocol (IETF)

Facebook API 入门的更多相关文章
- Web API 入门指南 - 闲话安全
Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患.相关的防御技巧以及Web AP ...
- 转载-Web API 入门
An Introduction to ASP.NET Web API 目前感觉最好的Web API入门教程 HTTP状态码 Web API 强势入门指南 Install Mongodb Getting ...
- Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)
不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...
- Web API入门指南(安全)转
安全检测的工具站点:https://www.owasp.org/index.php/Category:Vulnerability_Scanning_Tools Web API入门指南有些朋友回复问了些 ...
- 【ASP.NET Web API教程】1 ASP.NET Web API入门
原文 [ASP.NET Web API教程]1 ASP.NET Web API入门 Getting Started with ASP.NET Web API第1章 ASP.NET Web API入门 ...
- facebook api介绍
转自(http://sls.weco.net/node/10773) 一.Facebook API 基礎概念 Facebook API 概論 : API 最大的好處在於可以讓程式開發人員只需要根據 A ...
- Web API 入门指南
Web API 入门指南 - 闲话安全2013-09-21 18:56 by 微软互联网开发支持, 231 阅读, 3 评论, 收藏, 编辑 Web API入门指南有些朋友回复问了些安全方面的问题,安 ...
- 使用Jax-rs 开发RESTfull API 入门
使用Jax-rs 开发RESTfull API 入门 本文使用 Jersey 2开发RESTfull API.Jersey 2 是 JAX-RS 接口的参考实现 使用到的工具 Eclipse Neon ...
- Web API 入门 二 媒体类型
还是拿上面 那篇 Web API 入门 一 的那个来讲 在product类中加一个时间属性
随机推荐
- git ssh key配置
原文:https://blog.csdn.net/lqlqlq007/article/details/78983879 git clone支持https和git(即ssh)两种方式下载源码: 当使用 ...
- s:iterator数据累加示例代码
<s:set var="xs_heji" value="0" /> <s:set var="km_heji" value= ...
- C/C++下scanf的%匹配以及过滤字符串问题
最近在写一个测试的小程序,由于用到了sscanf函数对字符串进行标准读入,而sscanf在很多方面都与scanf比较相像,于是对scanf进行了一番测试,遇到了一系列基础性的问题,恶补基础的同时也体现 ...
- go语言基础之defer和匿名函数结合使用
1.匿名函数结合使用 示例1: package main //必须 import "fmt" func main() { a := 10 b := 20 defer func() ...
- Linux 网络设备驱动开发(一) —— linux内核网络分层结构
Preface Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计. Linux内核采用分层结构处理网络数据包.分层结构与网络协议的结构匹配,既能简化数据包处理流程,又 ...
- 如何获得Windows Server 2012上的FC的WWN
我有一个测试环境, 一对Host与storage array之间既有iSCSI的连接, 也有FC的连接. 原来iSCSI的连接是OK的, 现在需要转用FC. 当在光纤交换机上划好了Zone之后, st ...
- ssh 的安装
新安装的ubuntu 虚拟机,没有ssh时(ssh 连接不上),时ssh服务没装. 安装openssh-server,就可以. ------------------------------------ ...
- component is not authorized by this account hint: [B3GVCa0189e575] 错误解决?
component is not authorized by this account hint: [aMADoA0312e514] component is not authorized by th ...
- (剑指Offer)面试题40:数组中只出现一次的数字
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 思路: 这道题的简单版本是除了一个数字之外,其他数字都出现了两次,这个很简单,将所有的数异或一遍就 ...
- 算法笔记_029:约瑟夫斯问题(Java)
目录 1 问题描述 2 解决方案 1 问题描述 引用自<算法设计与分析基础>第三版: 约瑟夫斯问题,是以弗拉瓦斯.约瑟夫斯(Flavius Josephus)的名字命名的.约瑟夫斯是一 ...